CTF入门|第10期AES与哈希

admin 2026-07-22 07:58:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是CTF入门系列第10期,聚焦AES加密模式与哈希函数在CTF中的攻击技术。核心要点包括:ECB模式的重排与复制攻击、CBC模式的PaddingOracle和字节翻转攻击、哈希长度扩展攻击、生日攻击及MD5碰撞实战。文章强调CTFCrypto方向的核心思路是寻找算法实现缺陷而非正面破解,并推荐了padbuster、hash_extender等实用工具。可操作建议是掌握各模式特点后结合具体攻击手法解题。 综合评分: 85 文章分类: CTF,WEB安全,渗透测试,漏洞分析,安全工具


cover_image

CTF入门|第10期 AES与哈希

原创

安全值班室 安全值班室

安全值班室

2026年7月19日 09:00 河北

在小说阅读器读本章

去阅读

前一期我们拆解了RSA——基于大整数分解难题的非对称加密。本期转向两大对称加密与完整性验证核心技术:AES(高级加密标准)和哈希函数。在CTF的Crypto方向,AES的ECB/CBC模式攻击和哈希长度扩展攻击是最高频的考点,属于必会必练的内容。

本期速览   ① AES加密模式全景:ECB/CBC/CTR/GCM的原理与区别    ② ECB模式三大攻击:重排攻击、复制攻击、字节翻转    ③ CBC模式经典攻击:Padding Oracle和字节翻转    ④ 哈希攻击:长度扩展攻击、生日攻击、MD5碰撞实战

一、AES加密模式与CTF实战

AES(Advanced Encryption Standard)是目前最主流的对称加密算法,密钥长度支持128位、192位、256位。在CTF中不会让你去破解AES算法本身(那是数学家的活),考的是各种加密模式实现上的缺陷。理解清楚各模式的特点,解题思路自然浮现。

| 模式 | 特点 | CTF常见攻击 | | — | — | — | | ECB | 每块独立加密,相同明文→相同密文 | 重排攻击、复制攻击 | | CBC | 每块与前一块密文异或后再加密 | Padding Oracle、字节翻转 | | CTR | 计数器模式,可并行加密 | 密钥/Nonce重用攻击 | | GCM | CTR+认证标签,内置完整性 | Nonce重用→标签伪造 |

ECB模式:块的重排与复制

ECB是最简单的模式——明文按16字节分块,每块独立用同一密钥加密。弱点也最直观:相同16字节明文块产生相同密文块,攻击者可以重排块顺序而不被察觉。

经典题型

    ECB最经典的CTF题目是「复制Cookie块伪造管理员身份」——注册包含admin的用户名,让admin字样落在第2个16字节块,再用这个密文块替换原始Cookie的对应位置。很多平台入门题就用这个套路。

CBC模式:Padding Oracle Attack

CBC模式中,每个明文块先与前一密文块异或,再加密。解密时,先用密钥解密,再与前一密文块异或恢复明文。第一个块使用初始向量(IV)。Padding Oracle利用的是服务器对填充错误的差异性响应——错误填充返回”解密失败”,正确填充返回其他错误——通过这种侧信道逐字节爆破明文。

    实战建议

    用Python实现Padding Oracle攻击约60-80行代码。但比赛中建议直接用padbuster或自己封装好的脚本,节省时间。关键在于识别题目特征:服务器对解密失败的报错信息不同。

CBC字节翻转攻击

CBC字节翻转的思路与ECB类似但实现不同——修改密文块C[i-1]的某个字节,会导致P[i]对应位置变成你想要的任意值(受异或运算控制)。常用于修改Cookie中的权限位或用户名长度字段。

二、哈希函数在CTF中的应用

哈希函数将任意长度输入映射为固定长度输出,具有单向性和抗碰撞性。CTF中哈希攻击集中在三个方向:长度扩展攻击(针对Merkle-Damgård结构如MD5/SHA1/SHA256)、生日攻击(利用碰撞概率)、以及MD5特殊性质的利用。

哈希长度扩展攻击

这是CTF中哈希方向最高频的考点。MD5、SHA-1、SHA-256都是Merkle-Damgård结构,其核心问题是:知道H(M)和len(M),就能计算H(M || padding || extra),无需知道M的具体内容。在Web题中常表现为:服务器用secret+data拼接后做哈希作为校验值,攻击者可以在不知道secret的情况下构造出有效的新校验值。

生日攻击

生日攻击利用概率论中的”生日悖论”:在23人中至少两人同生日的概率超过50%。对应哈希碰撞:找到两个不同输入有相同哈希值,不需要2^n次尝试,只需要约2^(n/2)次。对于MD5(128位),理论上2^64次即可找到碰撞——实际中2004年王小云团队已实现MD5碰撞,2008年甚至能在15分钟内完成。

MD5碰撞实战

CTF中MD5碰撞题分两类:一是”不同明文md5相同”直接拿来当认证绕过;二是利用PHP类型比较陷阱,如md5(a)===md5(b)无法通过时,利用PHP的”0e”科学计数法字符串弱比较绕过(如md5(“240610708”)以0e开头,与另一个0e开头的md5值用==比较时会被当作0==0)。

三、解题工具箱

| 工具 | 用途 | 安装/获取 | | — | — | — | | padbuster | 自动Padding Oracle攻击 | apt install padbuster | | hash_extender | 哈希长度扩展攻击 | gem install hash_extender | | hashpumpy | Python哈希长度扩展库 | pip install hashpumpy | | fastcoll | MD5碰撞生成 | github.com/cr-marcstevens/fastcoll | | CyberChef | 在线分析/调试 | gchq.github.io/CyberChef |

核心心法

    CTF Crypto方向的核心思路是”找偏门”——出题人不会让你正面破解算法,而是在实现缺陷上做文章。看到AES先问什么模式,看到哈希先想长度扩展,看到==比较先试数组和0e绕过。有了这个思维框架,再结合本期讲的具体攻击手法,Crypto方向的Web+Misc混合题基本都能拿下。


觉得有用?点个在看支持一下

📌 值班员说  下期预告:Pwn入门——栈溢出基础。从栈结构到覆盖返回地址,用pwntools打出你的第一个shell,零基础也能跟。敬请期待。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全值班室 安全值班室 安全值班室《CTF入门|第10期 AES与哈希》

评论:0   参与:  0