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

发布时间:2026/7/10 18:21:46

布兹 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/7/10 18:21:46

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/7/10 18:11:46

一、报错现象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/7/10 18:11:46

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…

如何用OpCore Simplify在15分钟内完成专业级黑苹果配置:零基础四步指南

如何用OpCore Simplify在15分钟内完成专业级黑苹果配置:零基础四步指南

2026/7/10 20:01:51

如何用OpCore Simplify在15分钟内完成专业级黑苹果配置:零基础四步指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果…

如何轻松获取国家中小学智慧教育平台电子课本?tchMaterial-parser终极指南

如何轻松获取国家中小学智慧教育平台电子课本?tchMaterial-parser终极指南

2026/7/10 20:01:51

如何轻松获取国家中小学智慧教育平台电子课本?tchMaterial-parser终极指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课…

3 种传热方式(导热/对流/辐射)生活应用对比:以暖气、冰箱、结霜为例

3 种传热方式(导热/对流/辐射)生活应用对比:以暖气、冰箱、结霜为例

2026/7/10 20:01:51

3 种传热方式在生活场景中的实战解析:从暖气片到冰箱结霜的工程思维 暖气片摸着烫手却能让整个房间暖和起来,冰箱内壁结霜后耗电量飙升,清晨树叶总是上表面先结霜——这些现象背后是三种传热方式在"暗中较劲"。作为工程师或产品设计…

ADP5350 PMIC与STM32嵌入式电源管理实战

ADP5350 PMIC与STM32嵌入式电源管理实战

2026/7/10 20:01:51

1. 项目背景与核心需求在嵌入式系统开发中,电源管理一直是个容易被忽视却又至关重要的环节。我最近为一个工业级数据采集设备设计电源架构时,深刻体会到了这一点。传统方案中常见的LDODC-DC组合虽然简单,但在多电压域、低功耗模式和电池管理等…

如何利用Mermaid Live Editor实现技术文档可视化革命:完整指南

如何利用Mermaid Live Editor实现技术文档可视化革命:完整指南

2026/7/10 20:01:51

如何利用Mermaid Live Editor实现技术文档可视化革命:完整指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-liv…

人生模型的最小单位是什么?

人生模型的最小单位是什么?

2026/7/10 19:51:50

第一层:什么是人生模型? 很多人认为: 人生模型成功学方法论或者: 人生模型人生经验其实都不是。 更准确地说:人生模型,是一个人用来理解世界、预测结果、指导行动的一套简化规则。例如: 有人的人…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…