
这一题很难,用到了新知识,hash,感谢zc做题帮我速通
32位,放ida看主要代码
顺着逻辑读下去很好读懂:
第一个输入到string,长度需要为6的整数,然后拼接一个字符串@DBApp,经过一个函数sub_40100A,string1就需要和
6E32D0943418C2C33385BC35A1470250DD8923A9相等,猜也可以猜到是哈希,具体是哪一个哈希函数,需要进去sub_40100A看看
CryptCreateHash是哈希加密函数,很好找,至于是哪个加密函数,问ai得出的结果,以后记住就好了
对应的就是sha1,因此可以写python脚本暴力破解
import hashlib
string='@DBApp'
for i in range(100000,999999):
flag=str(i)+string
x = hashlib.sha1(flag.encode("utf8"))
y = x.hexdigest()
if "6e32d0943418c2c33385bc35a1470250dd8923a9" == y:
print(flag)
breakx = hashlib.sha1(flag.encode("utf8"))
y = x.hexdigest()
其中hexdigest()把二进制字节流转换回十六进制数据脚本执行结果:123321@DBApp
后面还有加密,一眼的套路:先输入到string,再拼接123321@DBApp,最后再加密,加密后的string1与27019e688a4e62a649fd99cadaafdb4e比较
看看加密函数sub_401019
对应MD5,直接到网站解密,MD5解密网站
结果是:~!3a@0123321@DBApp
提交发现不对
所以继续看后面代码
还有一个函数sub_40100F,把string传了进去
有个函数CreateFileA,生成dbapp.rtf文件,所以直接运行程序:
第一次输入:123321
第二次输入:~!3a@0直接得到文件,打开后就是flag