X-NUCA(牛咖)联赛8月逆向专题赛赛前--获取正确的key的解题思路

发表于:2016-08-25 08:40:00 来源:  合天网安实验室 阅读数(0人)

ha6ppy进行MD5后所得的16字节摘要,将摘要与0x16异或后(Result)写死在程序中。


用户输入key,将key进行MD5加密,加密后的结果与0x16异或,异或后的结果与Result进行比较,相等则用户输入了正确的key。


输入hint时的提示:_.__.._._.___.____.._._. ,为“MD5”的ASCII码的二进制表示(_表示0,.代表1)。


分析上面一段,发现有个循环比较[ECX]和[EDX]中的值,相等时才输出信息提示获取到正确的key,在此处下断点,获取[ecx]和[edx]中数据(由ESI可知长度为16字节):


使用[ECX]和[EDX]中的值解密MD5,未得到Flag,继续向上分析,发现[ECX]中的值在前面都异或了CL(0x16)

将[EDX]中的值(C9 15 6D 0B C7 61 D6 43 2D 2D B5 F4 F7 B0 B3 21)异或0x16得到正确key的MD5值(DF 03 7B 1D D1 77 C0 55 3B 3B A3 E2 E1 A6 A5 37),然后cmd5解出得ha6ppy。


相关新闻

大家都在学

课程详情

Serial算法分析

课程详情

去除程序弹窗

课程详情

Serial/Name算法分析