BUU-CrackRTF
这道题太离谱了,很多没有见过的API,看不懂。
先查壳,发现是无壳的32位,丢进IDA,找到主函数
先输入了一段6个字符的字符串,再连上“@DBApp”,再进行加密,看一下加密函数
CryptCreateHash哈希加密,有了解过哈希的是可以知道,哈希是很多算法放在一起,然后随机抽一个算法来加密,这个0x8004u是什么看不懂,去查了一下winAPI文档才知道这个代表SHA1加密。
加密后与6E32D0943418C2C33385BC35A1470250DD8923A9对比,正确的话再进行。从前面的v4<100000发现有范围限制,到1000000就可以了
1 | import hashlib |
解出是123321
接下来输入第二串密码
也是先连接上第一个的密码在进行加密,但加密方式有点不太一样
换成了32位的MD5加密,后面却什么信息也都没有给,没有范围怎么爆破,这怎么搞。看了WP后发现是在下面一个函数里面加密
这里用了FindResourceA( )函数,详细可以看https://blog.csdn.net/singleyellow/article/details/80308789
要用到Resource Hacker打开会有一个AAA的,从里面取出数据来
下面还有一个函数
将之前的输入的与AAA里面的异或,因为要生成一个.rtf的文件,那肯定缺少不了文件头。 直接搜索.rtf的文件头~
最后把文件头的前六位与AAA里面的六位做逆向异或,得到输入的密码
1 | s = "{\rtf1" |
得到第二次密码:~!3a@0
得到flag