news 2026/9/27 7:39:07

RSA/AES/ECC/PRNG/零知识证明:ctf-skills的ctf-crypto技能如何助你破解CTF密码学题(完整技巧清单)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RSA/AES/ECC/PRNG/零知识证明:ctf-skills的ctf-crypto技能如何助你破解CTF密码学题(完整技巧清单)

RSA/AES/ECC/PRNG/零知识证明:ctf-skills的ctf-crypto技能如何助你破解CTF密码学题(完整技巧清单)

【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills

ctf-skills是一个面向 AI Agent 的 CTF 解题技能库,其中的ctf-crypto模块把 CTF 密码学题的破解方法整理成了结构化技巧清单:RSA 攻击、AES 漏洞、ECC 椭圆曲线破解、PRNG 随机数预测、零知识证明(ZKP)漏洞,全部按"攻击模式 + 适用场景 + 完整代码"的方式沉淀在本地文档中。你只需让 AI Agent 加载这套技能,它就能像老练的密码学选手一样,快速判断题目类型并调用对应攻击。🔐

一、ctf-crypto 是什么?一个"密码学攻击字典"

传统学 CTF 密码学题的路径是:刷题 → 看 writeup → 记笔记。而 ctf-crypto 反其道而行——它把数百个历届 CTF 题目的解法提炼成可直接执行的技术条目,装进 AI Agent 的上下文里。

技能入口文件是 ctf-crypto/SKILL.md,它列出了全部子文档的索引,每个条目都是一句话概括"什么场景 → 用什么攻击":

子文档覆盖内容
rsa-attacks.md / rsa-attacks-2.md小指数开根、Wiener、Fermat、Hastad 广播、Coppersmith 等 30+ 种 RSA 攻击
modern-ciphers.md / modern-ciphers-2.md / modern-ciphers-3.mdAES 各工作模式漏洞、Padding Oracle、GCM nonce 复用、MAC 伪造
ecc-attacks.mdECDSA 随机数复用、小子群、坏曲线、Smart 攻击
prng.md / prng-attacks.mdMT19937 状态恢复、Math.random 预测、LCG 逆推
zkp-and-advanced.mdZKP 作弊路径、Shamir 秘密分享、Groth16 伪造
classic-ciphers.md凯撒、维吉尼亚、多字节 XOR、OTP 密钥重用
stream-ciphers.mdLFSR、Berlekamp-Massey、RC4 偏差
lattice-and-lwe.md / advanced-math.md格基约减、LWE/CVP、BSGS 离散对数

这套清单的价值在于:新手不再需要"想起来该用什么攻击",Agent 会根据题目特征自动匹配条目。

二、安装与一键配置 CTF 密码学工具

整个技能库支持一条命令安装(也兼容 Claude Code 等支持 Agent Skills 规范的 AI 工具):

git clone https://gitcode.com/gh_mirrors/ct/ctf-skills npx skills add ljagiello/ctf-skills

密码学攻击离不开 Python 数学库。技能文档已经按平台列好依赖,核心就一条命令:

pip install pycryptodome z3-solver sympy gmpy2 hashpumpy fpylll py_ecc

另外两个"大件"按需安装:

  • SageMath:ECC、Coppersmith、格攻击的必备环境(Linux 用apt install sagemath)
  • RsaCtfTool:自动化 RSA 攻击套件,会依次尝试 Wiener、Hastad、Fermat、Pollard 等全部主流手法

完整工具清单和分平台安装脚本见 scripts/install_ctf_tools.sh,执行bash scripts/install_ctf_tools.sh --dry-run all可以预览将要安装的内容。

三、5 分钟上手:怎么判断一道题该用哪种攻击?

拿到一道密码学题,ctf-crypto 建议的第一步不是硬解,而是快速定性。技能文档给出了"关键词路由"思路(同样写在 solve-challenge/SKILL.md 的分诊流程里):

题面出现RSA、prime、modulus、lattice、GCM→ 密码学方向;.py/.sage脚本里给出一堆大数 → 基本锁定 crypto 类别。

再对照下面这张"看数下菜"速查表,就能秒选攻击方向:

题目特征大概率攻击
n 是 2048 位大数,给了 e=3 和小消息小指数开立方根
同一个消息发给 3 个不同 nHastad 广播攻击
两个 n 能分解出公因子 / p、q 很接近批量 GCD / Fermat 分解
给的是 AES 加密的 JSON,块边界清晰ECB 剪切粘贴(cut-and-paste)
改密文后服务器返回不同错误提示Padding Oracle
两条签名的 r 值相同ECDSA 随机数复用,直接解出私钥
题目生成 token 用random.random()MT19937 状态恢复,预测下一个 token

这些判断规则背后,是 ctf-crypto/SKILL.md 中每个条目的"Pattern"字段——先描述题目长什么样,再给攻击方法,Agent 照此对号入座。

四、RSA 攻击:从开立方根到 Coppersmith 🎯

RSA 是 CTF 密码学题的"头号常客",技能库为此准备了两个专题文档、30 余种攻击模式,全部附带可直接运行的 Python/Sage 代码。

新手最常遇到的 6 种 RSA 弱点,在 rsa-attacks.md 里都有现成解法:

  1. 小 e 小消息:m³ < n 时密文就是 m³,取整数立方根得 flag
  2. 共模攻击:同一明文被两个不同公钥加密,扩展欧几里得一步还原
  3. Wiener 攻击:私钥 d 太小时,连 d 都不用求,直接分解 n
  4. Fermat 分解:p 和 q 相邻或接近时,sqrt(n) 附近搜质数
  5. Hastad 广播:e=3 加密三次,中国剩余定理 + 开方
  6. Coppersmith:素数"部分已知"(如高位泄露)时,small_roots()秒解

进阶的 rsa-attacks-2.md 收录了更"刁钻"的变体:dp/dq/qinv 部分泄露、CRT 故障攻击(Bellcore)、同态解密预言机绕过、Montgomery 归约时序侧信道,以及 e=1 构造模数绕过验签等。

⚡实用建议:不会写具体攻击脚本?先把 n、e、c 丢给 RsaCtfTool 一把梭——它会自动遍历所有经典攻击,这在 ctf-crypto/SKILL.md 的 Quick Start 命令里也特别标注了。

五、AES 与分组密码:模式比算法更脆弱

很多新手以为 AES 坚不可摧,CTF 的真相是:算法本身没破,破的全是"用法"。modern-ciphers.md 和 modern-ciphers-2.md 把常见"错误姿势"整理成了攻击清单:

错误姿势对应攻击
ECB 模式加密结构化数据密文块重排/剪切粘贴,伪造is_admin: true
CBC 模式 + 无 MACIV 位翻转,任意改写首个明文块
解密时暴露 padding 是否合法Padding Oracle,逐字节还原明文
AES-GCM 复用 nonce"Forbidden" 攻击:直接解出 GHASH 密钥
自造 S-Box 只有 16 种输出熵骤降,逐轮暴力可行

除了这些,文档还收录了压缩预言机(CRIME 类)、哈希长度扩展(hashpumpy 一行搞定)、CRC32 线性碰撞伪造签名、生日攻击/中间相遇等"现代密码学名场面",每种都给出了具体题目年份出处,方便回溯学习。

🔍 新手学习路径建议:先看懂 ECB 剪切粘贴(不需要密钥、不需要数学基础),再学 Padding Oracle(理解"预言机"这个核心概念),最后接触 GCM nonce 复用——这三招基本能覆盖大多数 Web 侧的对称加密题。

六、ECC 椭圆曲线攻击:随机数复用是"送分题"

ctf-crypto/ecc-attacks.md 覆盖了椭圆曲线题的高频考点,其中出现率最高的是随机数(nonce)复用:

  • ECDSA / DSA nonce 复用:两条签名的 r 相同 → 联立两个方程解出 nonce k → 直接推出私钥 d。技能条目里明确提示"先检查 r 值是否重复",这是拿到 ECC 题后的第一个动作。
  • 小 nonce 暴力:nonce 只有 20 位时,遍历全部候选值即可。
  • 小子群攻击:曲线阶含小因子时,Pohlig-Hellman + CRT 分治求解。
  • 坏曲线 / 奇点曲线:缺验证时发送非曲线上的点,奇点曲线可直接映射到加法/乘法群。
  • Smart 攻击:异常曲线(阶等于 p)下,p-adic 提升把离散对数变成 O(1) 问题。
  • 侧信道:Ed25519 余因子 h=8 泄露秘密标量比特位——2026 年熊形杯(BearCatCTF)真题解法。

配套工具链也写好了:SageMath 的discrete_log一行解模 p 离散对数,advanced-math.md 里还有通用 BSGS(baby-step giant-step)和 Pohlig-Hellman 的完整实现。

七、PRNG 预测:随机数从来不是"随机"的 🎲

CTF 里"随机数"题目有个统一主题:种子或状态可以被还原。ctf-crypto/prng.md 收录了基础手法,prng-attacks.md 收录了 2017 年后的进阶攻击:

  • MT19937(Python random):观察输出可完整恢复内部状态。技能库甚至覆盖了"只泄露 float"的场景——每个浮点数只有约 8 个有效位,用 GF(2) 魔法矩阵从 3360+ 个random.random()输出中恢复全状态,预测密码重置 token。
  • JS 的 Math.random():V8 引擎使用 XorShift128+,拿到 5~10 个连续输出,用 Z3 约束求解即可恢复 (state0, state1),后续值全部可预测。
  • C 的 srand(time(NULL)) + rand():用 Python ctypes 直接加载 libc 调 C 的 srand/rand,按时间戳同步复现同一序列——这个技巧对大量老题直接生效。
  • LCG 逆推:已知部分高位输出时,用模逆逐步回退状态;Java LCG 还有"中间相遇"解法。
  • 混沌 PRNG:Logistic 映射x = r·x·(1-x),种子恢复靠高精度小数暴力。

💡 记忆口诀:看到"random/seed/counter" 三个词,先想"状态可恢复吗"——CTF 里能恢复的占九成。

八、零知识证明与约束求解:ZKP 题怎么"作弊"🔓

ctf-crypto/zkp-and-advanced.md 处理 ZKP、秘密分享和约束求解类题目,核心思路很反直觉:

  1. ZKP 作弊:如果题目让你证明一个"不可能"的问题(比如给 K4 图三色着色),说明出题人留了后门——通常是哈希碰撞或可预测的 PRNG salt,找到其一即可"一本正经地造假证明"。
  2. Shamir 秘密分享:系数由固定种子的随机数生成时,一个份额 + 可预测系数 = 关于秘密的一元方程;若多项式系数跨轮复用,相减即可消掉全部随机性,只剩明文差。
  3. Groth16 / DV-SNARG 伪造:先查验证器常量——trusted setup 里 delta == gamma 这种"彩蛋"可以直接构造伪造证明 A=α, B=β, C=-vk_x。
  4. Z3 约束求解:位级问题用 BitVec、任意精度用 Int,BPF/seccomp 过滤器、字节级替换密码都能喂给它解。
  5. 乱码电路(Garbled Circuits):free XOR 技巧下,三个真值表项异或即可恢复全局 delta。

这类题目数学门槛高,但技能文档把"先查哪里"的路径写得很直白:先看验证器 → 再看随机数来源 → 最后才碰证明本身。

九、进阶弹药库:格、流密码与异类结构

当题目超出上面五类,ctf-crypto 还有三个"军火库":

  • 格 / LWE 攻击(lattice-and-lwe.md):给了模线性方程组 + "隐藏量很小/稀疏/部分泄露"的承诺 → 按格问题处理。工作流固定为 LLL 起步 → BKZ 精修 → Babai 近似 CVP,文档还专门整理了"常见失败原因排查表"。
  • 流密码(stream-ciphers.md):LFSR 用 Berlekamp-Massey 从 2L 个比特恢复连接多项式;Galois LFSR 可以 XOR 已知文件头后由自相关直接恢复抽头掩码。
  • 异类代数结构(exotic-crypto.md / exotic-crypto-2.md):辫群 Diffie-Hellman(Alexander 多项式可乘性直接算出共享密钥)、热带半环、Paillier 同态 LSB 预言机、ElGamal 平凡 DLP、BIP39 助记词部分暴力……冷门题的救命稻草。

十、实战工作流:让 Agent 替你解题

装好技能后,推荐配合仓库的编排技能 solve-challenge/SKILL.md 使用,完整流程是:

  1. 分诊:把题目文件/URL 丢给 Agent,它先file、strings、连服务,判断"这题是 crypto 不是 pwn";
  2. 加载 ctf-crypto:Agent 依据条目里的 Pattern 字段匹配攻击;
  3. 执行与切换:技能内置"When to Pivot"规则——比如发现卡点其实是反混淆,会自动建议切到/ctf-reverse;
  4. 输出 writeup:解完后调用 ctf-writeup/SKILL.md 生成标准格式复盘文档。

对新手来说,这套流程最大的改变是:你负责观察题目、验证 flag,Agent 负责查字典、写脚本、试错。卡住时,对照 ctf-crypto/SKILL.md 末尾的 "When to Pivot" 小节手动切换思路,同样有效。

常见问题(FAQ)

Q1:完全不会密码学,能直接用这套技能吗?能。技能条目采用"题目特征 → 攻击方法"的写法,Agent 按特征匹配,不需要你先懂 Coppersmith 的数学推导;但建议顺手读一下 classic-ciphers.md 里的频率分析、XOR 分析等基础条目,它们是所有高级攻击的直觉来源。

Q2:SageMath 装不起来怎么办?先确认平台:Linux 用 apt,macOS 用 brew 的--cask sage。gmpy2 还需要 libgmp(apt install libgmp-dev)。这些前置说明都写在 ctf-crypto/SKILL.md 的 Prerequisites 一节。

Q3:技能库会不会过时?每个攻击条目都标注了来源赛事与年份(如 BearCatCTF 2026、BSidesSF 2025),且文档按主题拆分为多页便于持续维护——新题解法可以随时补进对应文件。


📌小结:ctf-crypto 把 CTF 密码学从"背攻击名"变成"对特征下攻击"——RSA 看模数结构、AES 看工作模式、ECC 查随机数复用、PRNG 想状态恢复、ZKP 先找后门。装好 ctf-crypto/SKILL.md 及其 16 个子文档,你的 AI Agent 就带上了一本"历届 CTF 密码学真题的解题字典"。

【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 7:38:32

Spring DI 详解

学习过 IoC 后&#xff0c;就知道我们可以将对象交给 Spring 进行管理&#xff0c;但是我们在一个类会有若干属性&#xff0c;也就是这个类依赖于这若干个属性&#xff0c;那么我们就可以将交给 Spring 管理的对象注入到这个类中&#xff0c;这也就是依赖注入。依赖注入有三种方…

作者头像 李华
网站建设 2026/9/27 7:36:21

MySQL用户与权限管理

MySQL 是一种广泛使用的关系型数据库管理系统,支持多用户访问和权限控制。在多用户环境下,数据库安全至关重要,而用户和权限管理是数据库管理中最基础也是最重要的一部分。通过合理地创建和管理用户、分配和管理权限、使用角色权限,可以有效地保护数据库,确保数据的安全性…

作者头像 李华