buuctf—crackrtf个人感悟

这道题花了我整整一天的时间,非常重要,我从中学到很多,不得不记录下来

 

 未看题解前,我点击这个函数只感觉绝望,全是我看不懂的库函数,分析半天没啥效果。

看了题解后,才发现这里正确步骤是什么

 

 0x8004u,代表着加密方式为sha1

https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

上方为查看的网址。

 

 明白这个后,我便在网上搜索并现场学习sha1的解密方法

https://blog.csdn.net/ccblogger/article/details/79927173

在上方的网址里,我勉强明白了如何用python实现sha1解密,于是编写了如下代码

 

 

如上图

 

接下来往下走,进入第二个加密函数,发现是md5解密

 

 

 

 

但是,上个加密告诉了我们前面的数只有6位(atoi是c库函数,把数字转化为字符串,前面说了此处输入的数大于100000)

 

 所以上面那个可以暴力破解,但是这个未给我们提示信息,直接爆破是不可能的,所以得另寻他路

进入

 

 此处的函数,

 

 由本题的题目描述可知,最终我们要生成一个文本文件

 

所以很容易得出,此函数即为生成flag的函数。

在网上搜索可知,要用特殊的软件打开——ResourceHacker,打开后找到aaa。

 

 因为下一个createfileA是找到文件并打开,推测出上面的函数作用是生成一个rtf文件

 

 

 

 

 因为a2是指向输入值的指针,所以此处相当于是将输入值异或得出rtf文件。因为此处的输入是6位,所以我们只需要将前六位异或前的值求出即可。找出rtf文件的前六位文件头{\rtf1

编写脚本

 

 

 

 

 加上前方的flag后12位,即可得出答案

 

 

总结:

1.要通过所需要得到的结果逆向推我们做题的方向。

2.一条路走不通可以走另一条路,不要在错误的方向策马奔腾

3.多做,积累各种题型

4.多搜谷歌

posted @ 2021-05-11 20:57  夏男人  阅读(207)  评论(0)    收藏  举报