常见的Web密码学攻击方式汇总

消息来源: 51CTO         消息类型: 行业新闻         发布日期:2016-10-20

写在前面

所有脚本的导图都是自己写的、画的,如果有不好的地方多多包涵,错误的地方也请指出,谢谢。

分组密码的模式

分组密码每次只能处理加密固定长度的分组,但是我们加密的明文可能会超过分组密码处理的长度。

这时便需要对所有分组进行迭代,而迭代的方式被称为分组密码的模式。常见的为针对ECB、CBC模式攻击(L-ctf提到其中一种)。

ECB

ECB模式的全称是Electronic CodeBook模式,将明文分组加密后直接成为密文分组,而密文则是由明文分组直接拼接而成,如图所示:

Features:

ECB模式是所有模式中最简单的一种。明文分组和密文分组是一一对应的,如果明文分组有相同的那么最后的密文中也会有相同的密文分组。

因为每个分组都独自进行加密解密,所以无需破解密文就能操纵部分明文,或者改变明文,在不知道加密算法的情况下得到密文,从而达到攻击效果,如图所示(翻转密文分组,那么明文分组也会被翻转)

Example:

某次CTF遇到的题目

思路以administrator权限登陆就就能获得Flag。判断权限则是根据cookie里面的uid参数,cookie包含username和uid两个参数,均为使用ECB加密的密文,然而username的密文是根据注册时的明文生成的。

因此我们可以根据username的明文操纵生成我们想要的uid的密文。经过fuzz发现明文分组块为16个字节,那么我们注册17字节的用户,多出的那一个字节就可以是我们我们希望的UID的值,而此时我们查看username的密文增加部分就是UID的密文,即可伪造UID。

注册aaaaaaaaaaaaaaaa1获得1的密文分组,注册aaaaaaaaaaaaaaaa2获得2的密文分组,以此类推

源码没找到,好像弄丢了,自己写了个差不多的,有兴趣可以练习

ebc.php: