CTF 逆向之MD5短爆破

    参加了集团公司的网络攻防大赛后,有道逆向里面的jungle.exe这个题,很有意思。于是想挑战一下。

首先查壳,丢到exeinfope里面一看,发现是asp的壳。

 

CTF 逆向之MD5短爆破_第1张图片

于是用手头的asp脱壳工具尝试脱壳,发现都不行,不是不支持就是报错!没办法,只能老实手工脱壳了。

根据ESP定律+IAT修复+重定向表修复后,脱壳的程序可以正常运行。

用OD载入后,开始单步跟踪

CTF 逆向之MD5短爆破_第2张图片

到用户输入界面,我随便输入了个字符串:111111111(9个1)单步跟入到下图,发现了flag字样

CTF 逆向之MD5短爆破_第3张图片

这个应该是flag的头,于是继续跟进,发现确实在核对输入数据与flag{比较,这块就过不去了

CTF 逆向之MD5短爆破_第4张图片

于是果断的从来,输入数据为 flag{111111111,来到了下图的地方,在0x16的位置比较0x7D 也就是'}'符号

由于C语言的字符串下标是从0开始的,也就是字符串第23个字符处必须是}

CTF 逆向之MD5短爆破_第5张图片

于是构造字符串:flag{11111111111111111} 继续跟进,接下来是在0x7、0xc、0x11处核对字符 '-' (即:0x2D)

CTF 逆向之MD5短爆破_第6张图片

于是字符串就变成了flag{11-1111-1111-1111},继续跟进,发现了一个字符串:01E3421C=dump_SCY.01E3421C (ASCII "c7218260ef2b966ab0454e07c55cf4e9")
感觉像是MD5的字符串,于是用python解了一下,得到: oh,结之前的flag应该就是flag{oh-1111-1111-1111}

CTF 逆向之MD5短爆破_第7张图片

再次输入后,继续跟进发现过去了,开始进行第二段的比较得到了下图的错误:

CTF 逆向之MD5短爆破_第8张图片

于是反复跟比较算法也没有找到任何有效的数据,结合本题的提示是md5段字节爆破,估计是这块需要进行爆破处理了。

于是继续python大法,得到字符串:flag{oh-aa30-1111-1111}

CTF 逆向之MD5短爆破_第9张图片

继续输入后,单步跟进,此时发现一个字符串:堆栈地址=001DFC30, (ASCII "YTkxYQ==")   eax=786B5459
看起来像B64编码,于是尝试解码,得到第三组的flag值:a91a 。

CTF 逆向之MD5短爆破_第10张图片

想起之前用od也看过字符串,于是找到第四组的字符串:NGZicA==   ,解码为:4fbp

CTF 逆向之MD5短爆破_第11张图片

那么最终的flag就是:flag{oh-aa30-a91a-4fbp} 输入后验证:

CTF 逆向之MD5短爆破_第12张图片

你可能感兴趣的:(CTF)