先看代码
输入的passwd1必须是6位数,然后把"@DBApp"连接在passwd1后面
进入sub_40100A
这里查阅官方文档得知是sha1加密
最终得到的密文为
6E32D0943418C2C33385BC35A1470250DD8923A9
那么就可以爆出来passwd1
mport hashlib
key = "@DBApp"
for i in range(100000,1000000):
a = str(i)+key
s = hashlib.sha1(a.encode())
h = s.hexdigest()
if "6e32d0943418c2c33385bc35a1470250dd8923a9" in h:
print(h)
print(a)
#passwd1 = 123321
#123321@DBApp
往下看
和前面的passwd1是大同小异,输入的passwd2与"123321@DBApp"链接起来传进去加密,不过这次选择了MD5加密得到密文
27019e688a4e62a649fd99cadaafdb4e
爆破不太实际,接着进sub_40100F
第14行可以看到从"AAA"拿出来字符,和变化过的字符一起传入到22行的sub_401005
在sub_401005中,变化过的字符和AAA拿出来的字符之间进行异或
然后输出一个叫:dbapp.rtf的文件。
现在主要是得知道AAA里面的字符是什么
用一个叫:Resource Hacker的工具可以看到文件内的资源
因为我们需要的是前6位的passwd2,所以选择AAA的前6位与rtf文件头的前6位进行异或,就可以得到输入的passwd2
AAA=[0x05,0x7D,0x41,0x15,0x26,0x01]
rtf = "{\\rtf1"
passwd2 = ''
for i in range(0,len(rtf)):
c = ord(rtf[i])^AAA[i]
passwd2 += chr(c)
print(passwd2)
#passwd2 = ~!3a@0
打开程序输入两个passwd就可以得到dbapp.rtf,得到flag
0 评论