骇极杯第二个逆向,也不难,也是两个函数,首先是爆破MD5,然后进行动态解密check函数

这是结束几天之后,我再来写的wp,我开始觉得很简单的,后来看了详细的过程之后我觉得我还是有很多却缺陷的,下面开始一步一步分析

首先拖进ida,主要分两部分来看:

要先得到luck string才能获得check函数的内容,所以先对MD5进行爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import hashlib
for a1 in range(97,123):
for a2 in range(97,123):
for a3 in range(97,123):
for a4 in range(97,123):
for a5 in range(97,123):
for a6 in range(97,123):
asc=hashlib.md5((char(a1)+char(a2)+char(a3)+char(a4)+char(a5)+char(a6)).encode('ascii')).hexdigest()
v5=0
v4=0
for i in range(32):
if(asc[i]=='0'):
v5+=1
v4+=i
if(10*v5+v4==403):
print(chr(a1)+chr(a2)+chr(a3)+chr(a4)+chr(a5)+chr(a6))

脚本我放在虚拟机里面跑了半个小时,最后得出了luck string = ozulmt

再弄出v4和v5