ScreenShot_2026-04-07_120529_249.png
这一题很难,用到了新知识,hash,感谢zc做题帮我速通
ScreenShot_2026-04-07_162302_889.png
32位,放ida看主要代码
ScreenShot_2026-04-07_162347_837.png
顺着逻辑读下去很好读懂:

第一个输入到string,长度需要为6的整数,然后拼接一个字符串@DBApp,经过一个函数sub_40100A,string1就需要和
6E32D0943418C2C33385BC35A1470250DD8923A9相等,猜也可以猜到是哈希,具体是哪一个哈希函数,需要进去sub_40100A看看

ScreenShot_2026-04-07_162933_373.png
CryptCreateHash是哈希加密函数,很好找,至于是哪个加密函数,问ai得出的结果,以后记住就好了
微信图片_20260407154221_2822_5.png
对应的就是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)
            break
x = hashlib.sha1(flag.encode("utf8"))
    y = x.hexdigest()

其中hexdigest()把二进制字节流转换回十六进制数据

脚本执行结果:123321@DBApp

后面还有加密,一眼的套路:先输入到string,再拼接123321@DBApp,最后再加密,加密后的string1与27019e688a4e62a649fd99cadaafdb4e比较

看看加密函数sub_401019
ScreenShot_2026-04-07_163737_036.png
对应MD5,直接到网站解密,MD5解密网站
ScreenShot_2026-04-07_163858_834.png
结果是:~!3a@0123321@DBApp
提交发现不对
所以继续看后面代码

还有一个函数sub_40100F,把string传了进去
ScreenShot_2026-04-07_164315_860.png
有个函数CreateFileA,生成dbapp.rtf文件,所以直接运行程序:

第一次输入:123321
第二次输入:~!3a@0

直接得到文件,打开后就是flag
ScreenShot_2026-04-07_164533_068.png