文章27
标签0
分类4

BUUCTF-CrackRTF

先看代码
1.png

输入的passwd1必须是6位数,然后把"@DBApp"连接在passwd1后面
进入sub_40100A

2.png

这里查阅官方文档得知是sha1加密

3.png

最终得到的密文为
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

往下看

4.png

5.png

和前面的passwd1是大同小异,输入的passwd2与"123321@DBApp"链接起来传进去加密,不过这次选择了MD5加密得到密文
27019e688a4e62a649fd99cadaafdb4e
爆破不太实际,接着进sub_40100F

6.png

第14行可以看到从"AAA"拿出来字符,和变化过的字符一起传入到22行的sub_401005

7.png

在sub_401005中,变化过的字符和AAA拿出来的字符之间进行异或
然后输出一个叫:dbapp.rtf的文件。
现在主要是得知道AAA里面的字符是什么
用一个叫:Resource Hacker的工具可以看到文件内的资源

8.png

因为我们需要的是前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 评论

    ">