0x00前言
本系列文章将带来cryptocals 这套密码学挑战的write-up.不同于通过上课或者看书的方式学习密码学,这些题目来自于现在生活中一些软件系统和密码构造中的缺陷。
本系列每一个题的wp基本是采用如下结构:题目解释、相关知识点讲解、代码实现及解释,运行测试。代码均采用python3实现,代码实现部分是参考国外大佬ricpacca的,结合自己的理解及成文需要进行部分修改。
第二套一共有八关。
第二套题目

主要是和分组密码相关的
0x05
第13题

要求写一个函数profile_for,传入profile_for(“foo@bar.com”),会生成
{
email: ‘foo@bar.com’,
uid: 10,
role: ‘user’
}
编码为email=foo@bar.com&uid=10&role=user
注意,不需要编码@,&等符号
接着生成随机的AES密钥,然后用这个密钥加密编码后的用户信息,再解密得到编码的结果,然后解析编码的结果。
题目要去我们仅使用user和密文,要求进行攻击,使得解密,解码后得到的role是admin,而不是user
这种攻击方法的原理利用的是ECB模式分块单独加密,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响的特点。通过将故意构造的密文替换原密文,从而篡改解密后的信息。
具体代码如下:
定义加密函数,使用AES-128-ECB加密编码过的用户信息,以及对应的解密函数

本文深入探讨密码学挑战中的攻击方法,包括ECB模式下的密文篡改、CBC模式下的翻转攻击,以及PKCS#7填充检测与去除。通过具体题目解析,如profile_for函数的利用、CBC模式下的密文翻转,揭示了现实世界中密码系统的潜在漏洞。
最低0.47元/天 解锁文章
3113

被折叠的 条评论
为什么被折叠?



