GWCTF-2019-re3
题不是很难,但是自己做的时候过于Sb了,也不能这样说,害,就是自己想多了,不久前自己魔改了一下AES,所以一直想得是魔改的AES,在哪儿整了半天,越想越不对,其实就是没有魔改AES,调试一下把KEY调试出来即可。我去看了一些WP,有点离谱,有些把密钥的MD5分析出来了,然后解密。。。。确实也加深学到了如何去识别MD5算法,还是很有收获。
这道打开,是很经典的SMC解密。
对于SMC我们有两种解法,一种是写IDC脚本,一种是直接动态调试,让它自己把密文解密出来。
对于IDC脚本:
1 | from idc_bc695 import * s=0x402219 #加密地址 |
进行动态分析
分析这这个函数,我们可以知道,第一个sub_400A71就是我们AES的密钥扩展。
下面的函数就是AES加密函数,我们点开即可分析出。
对于密钥,我们可以知道,密钥扩展,会在原来的密钥基础上进行扩展,也就是说,当密钥扩展后,我们扩展后的前16位,就是我们的原始密钥,我们动态调试提取出来即可。
先前我准备用赛博厨房来解的,但是不知道为啥解不出来(可能我不熟悉它的原因。。。)
所以就写一个py脚本来解
1 | from Crypto.Cipher import AES |
解出我们的FlAG:
flag{924a9ab2163d390410d0a1f670}
对于密钥,我看了他们的WP可以发现,居然是用MD5加密了BASE64表,然后在进行操作来生成的。
对于MD5特征码
一般的MD5的两个特征。
评论