布兹 CTF「你的眼睛好吗?」完整解题思路 Sage 攻击代码

发布时间:2026/9/8 10:41:59

布兹 CTF「你的眼睛好吗?」完整解题思路  Sage 攻击代码
一、题目原理梳理1. 参数与生成逻辑题目基于ML-DSA Level5Dilithium5参数环\(R_q \mathbb{F}_q[X]/(X^{256}-1)\)\(q83804172^{23}-2^{13}1\)矩阵维度\(A \in R_q^{k\times l},\ k8,l7\)小系数分布\(\eta2\)即 \(s,e\) 每个多项式系数取自 \(\{-2,-1,0,1,2\}\)两种样本MLWE 样本返回 1\(t A\cdot s e\)\(s\leftarrow\chi_\eta^l,\ e\leftarrow\chi_\eta^k\)\(s/e\) 所有多项式系数范围 \([-2,2]\)随机样本返回 0$r \xleftarrow {\$} R_q^k$每个多项式系数均匀取自 $[0,q-1]$几乎全是大数2. 核心区分漏洞MLWE 向量 \(tAse\) 中每个多项式的所有系数都是 7 个小系数s线性组合再加 1 个小系数e取值范围远小于均匀随机向量 均匀随机向量 r 的系数遍布整个模空间 \([0,q-1]\)几乎没有小数值。最简区分特征 对向量 \(t/r\) 内每一个多项式展开全部 256 个系数统计绝对值≤2 的系数数量MLWE 向量大量系数绝对值≤2数百个均匀随机向量几乎没有绝对值≤2 的系数0~ 几个仅靠这个统计特征就能 100% 区分两种分布答对 128 轮即可输出 flag。二、完整 SageMath 攻击代码1. 解码辅助函数sageimport gzip, base64 from ast import literal_eval RING_RANK 256 q 8380417 Fq GF(q) base_ring.x Fq[] Rq.X base_ring.quotient_ring(x^RING_RANK - 1) def isanitize_mat(s): s base64.b64decode(s) s gzip.decompress(s) data literal_eval(s.decode()) return Matrix(Rq, [[Rq(sss) for sss in ss] for ss in data]) def isanitize_vec(s): s base64.b64decode(s) s gzip.decompress(s) data literal_eval(s.decode()) return vector(Rq, [Rq(ss) for ss in data]) def count_small_coeffs(vec, bound2): 统计向量所有多项式中绝对值≤bound的系数总数 total 0 for poly in vec: coeffs poly.list() # 展开多项式256个系数 for c in coeffs: c_abs min(c, q - c) # 模q下的最小绝对值 if c_abs bound: total 1 return total def distinguish(A_str, t_str): # 解码A和t A isanitize_mat(A_str) t isanitize_vec(t_str) cnt count_small_coeffs(t, 2) # 阈值经验MLWE样本cnt 100随机样本cnt 10 if cnt 50: return 1 # MLWE else: return 0 # 随机2. 交互自动化逻辑netcat 对接python运行from pwn import * # 连接题目服务替换为题目Connect地址 io remote(archive.cryptohack.org, 43607) for round in range(130): # 读取sanitize_mat(A)行 io.recvuntil(bsanitize_mat(A) ) A_b64 io.recvline().strip().decode() # 读取sanitize_vec(t)行 io.recvuntil(bsanitize_vec(t) ) t_b64 io.recvline().strip().decode() # 读取提示符 io.recvuntil(b ) # 执行区分 res distinguish(A_b64, t_b64) io.sendline(str(res).encode()) # 打印轮次日志 resp io.recvline().decode() print(f第{round1}轮 | 判定{res} | 服务返回{resp}) if flag in resp: print([] 获取flag, resp) break三、原理细节解释多项式系数绝对值计算模 q 下系数 c 的真实最小绝对值为 \(\min(c,\ q-c)\)例如 \(q-1\) 等价于 \(-1\)绝对值为 1。阈值选择MLWE 输出 \(tAse\)每一项是 7 个\([-2,2]\)数相乘求和再加 1 个\([-2,2]\)误差系数分布高度集中在 0 附近一轮统计数百个小系数均匀随机向量 r每个系数均匀分布在 \([0,q-1]\)恰好落在 \([-2,2]\) 的概率仅 \(5/q \approx 6\times10^{-7}\)8 个多项式 ×256 系数总共期望仅 1 个以内小系数。 设置阈值50完全可以无错区分。

相关新闻

PlantCV形态分析教程:测量植物大小、形状和生长参数的完整指南

PlantCV形态分析教程:测量植物大小、形状和生长参数的完整指南

2026/8/27 13:08:57

PlantCV形态分析教程:测量植物大小、形状和生长参数的完整指南 【免费下载链接】plantcv Plant phenotyping with image analysis 项目地址: https://gitcode.com/gh_mirrors/pl/plantcv PlantCV是一款强大的植物表型分析工具,专为植物图像分析设…

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.3:execon project ruoyi-modules-syste

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.3:execon project ruoyi-modules-syste

2026/9/8 0:32:20

一、报错现象Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.3:exec on project ruoyi-modules-system: Command execution failed. Process exited with an error: 1Maven 只是执行器,真正的问题在 Spring Boot 启动阶段。应用没起来&#xff0c…

Java-AES-Crypto安全审计:如何确保加密实现的安全性

Java-AES-Crypto安全审计:如何确保加密实现的安全性

2026/9/4 2:45:36

Java-AES-Crypto安全审计:如何确保加密实现的安全性 【免费下载链接】java-aes-crypto A simple Android class for encrypting & decrypting strings, aiming to avoid the classic mistakes that most such classes suffer from. 项目地址: https://gitcode…

e稿是什么 一站式AI论文写作工具核心能力全方位科普

e稿是什么 一站式AI论文写作工具核心能力全方位科普

2026/9/8 10:33:00

本文速览本文围绕e稿的定位、资质、核心功能、差异化优势、实测效果及使用方法展开科普,适用于学生、医护、高校教师、科研从业者等有学术写作需求的人群。e稿是吉林省睿安未来科技有限公司自主研发的一站式AI论文写作软件,覆盖从拟题到降重的全流程学术…

Qt/C++实现幸存者游戏:从架构设计到性能优化的完整实战解析

Qt/C++实现幸存者游戏:从架构设计到性能优化的完整实战解析

2026/9/8 10:33:00

简介:基于Qt框架的幸存者游戏源码包,来自南京大学计算机系高级程序设计课程大作业,面向具备基础C语法、希望深入面向对象编程的初学者,也适合毕业设计或游戏开发入门参考。项目围绕类幸存者玩法,依次实现了带障碍物的地…

ResNet18嵌入SE与CBAM注意力机制:图像分类实战与对比

ResNet18嵌入SE与CBAM注意力机制:图像分类实战与对比

2026/9/8 10:33:00

简介:针对深度学习图像识别中卷积网络对关键特征关注不足的痛点,这份配套项目以ResNet18为载体,演示如何嵌入SE、CBAM、ECA等主流注意力模块,适合有一定CNN基础、希望提升模型精度的学习者和研究者。压缩包共7个文件,以…

企业AI优化实操指南:从数据治理到模型落地的完整路径

企业AI优化实操指南:从数据治理到模型落地的完整路径

2026/9/8 10:33:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

C盘爆红不用慌:Windows自带清理工具链与PowerShell自动化实战

C盘爆红不用慌:Windows自带清理工具链与PowerShell自动化实战

2026/9/8 10:33:00

C盘爆红,第一反应是下载各种“C盘清理大师”?先别急。Windows 自带的一整套清理链路,很多时候比第三方软件更稳、更干净,而且不装全家桶、不弹广告、不偷偷扫描。这篇文章要聊的就是这套链路:存储感知 磁盘清理 DISM…

永磁同步电机参数辨识:基于粒子群算法的Simulink仿真全流程

永磁同步电机参数辨识:基于粒子群算法的Simulink仿真全流程

2026/9/8 10:23:00

我们搞电机控制的,应该都有过这种经历:明明仿真里调得好好的PI参数,一上实验台就全变了样。电流环抖得跟筛子似的,参数怎么调都压不住。很多人第一反应是硬件问题,但实际罪魁祸首往往是电机模型参数已经偏离了设计值。…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/7 20:21:46

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

2026/9/8 0:02:30

芯片这个行业有个不太被人摆到台面上、但几乎每天都在发生的场景:客户拿着一条良率曲线截图问你,这批货的良率怎么掉了三个点,是不是工艺出问题了,产生的不良会不会流到他们产线上去。你解释了半天,客户似懂非懂&#…

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

2026/9/8 0:02:30

ValueError: sampler option is mutually exclusive with shuffle,这个报错我在 PyTorch 的 DataLoader 上至少见过几十次了,而且很有意思的是,它经常不是新手专属——很多写了好几年模型的老手,在从单机改成自定义采样器&#xf…

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

2026/9/8 0:02:30

有人可能在网上开着皮卡拍视频,声称中国电动车不仅性能不如美国大排量车型,安全性也堪忧。然而事实恰恰相反,GAC、吉利和零跑最新推出的电动车型在极为严苛的欧盟新车安全评鉴(Euro NCAP)测试中全部斩获满分。就在特斯…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…