CrackRTF

这算是第一次写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}

posted @ 2020-03-11 14:04  PYozo_free  阅读(1315)  评论(2编辑  收藏  举报