这算是第一次写ctf题目的博客把。
被这道题搞得头大,各种没见过的API(不过通过查资料了解到了)
检查了一下,没壳,win32
然后运行
让你输入第一个密码,猜想一下,说明后面可能还会有几个输入,并且有strcmp类似的检查密码函数。
打开ida
简单分析一下
输入字符串并且长度等于6,大小大于100000
strcmp上面有个函数,参数里有String1,所以这个应该是加密函数
点进去看看
不知道这些是什么,查了额下发现有些函数竟然会被淘汰?(与本题无关)
CryptCreateHash哈希加密,有了解过哈希的是可以知道,哈希是很多算法放在一起,然后随机抽一个算法来加密
查了官方文档MSDN,发现第二个参数时加密时所用的方法标号。0x8004u是shl加密,赶紧跑去ctf wiki上面看看这个shl是否可以手动解答.....
没有看懂。从前面的v4<100000发现有范围限制,那么暴力破解从100000到6个字符能表达的最大数字0x393939393939不过,我看了网上的一些人博客他们到999999就可以了,不知道为啥。。
破解出来后发现是123321
接着分析
发现又需要输入字符串并且长度也是6
还链接了pbdata,就是说6+123321+"@DBApp"
然后在进行加密
进去看看
函数与上面的差不多,只是换了个加密方式,md5加密。我在网上找了好多个md5解密网站都无法对
这串字符串解密,不知道为啥,希望有好心人告诉我下。没有范围不能爆破。
发现这里还有个加密的函数
这都是写啥?
后来查了的https://blog.csdn.net/singleyellow/article/details/80308789
发现是查找一个叫AAA的文件,然后获取资源大小等...后面还有个函数点进去看看
异或运算,自己输入的字符串和指向文件第一个字节的指针
看了别人博客发现要用到
这个东西。
我不是很理解为什么密码是6,听别人说是加密后是一个rtf的头,所以是6.我还没搞清楚
取AAA文件的前6个字节。
然后在做异或的逆向运算,与rtf头做逆向。得出了
~!3a@0
然后该exe会在目录下创建一个rtf文件,里面有flag
Flag{N0_M0re_Free_Bugs}