【CTF习题】文件数据修复
本帖最后由 whklhh 于 2018-7-24 22:19 编辑# 题目
> 有个文件加密工具,能将一个文件加密到一个.ctf文件中去。
>有一个犯罪分子将存有犯罪记录的一个名为“CTFtest.ctf”的加密文件被删除了。
>现经过数据恢复,我们已经恢复了该文件。但是很不幸,该文件头部的部分数据已经被覆盖掉了。这个.ctf文件已经不能正常打开了。
>而且加密该文件的口令,犯罪分子也不愿意交代,我们只知道他惯用的口令是一个8位纯数字口令。
>请分析压缩包里的.ctf文件以及解密程序最大限度地恢复出文件中的内容,flag就在里面。Flag形式为大写32位md5。
这个题目好有取证的感觉~
但是也好复杂OTZ有点怂
# 题解
首先初步分析,无壳,MFC程序
![](https://img-blog.csdn.net/20171206222710159?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
通过xspy找到3个按钮的对应点击函数,分别查看
发现sub_402570对应“解密”按钮
![这里写图片描述](https://img-blog.csdn.net/20171206223341082?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
往下阅读流程,发现它依次读取了4字节、4字节、X字节、16字节、4字节、Y字节
第一个4字节是验证格式,为固定内容
第二个4字节标识X的长度
第三个X字节存下来留用(后发现是用来表示原文件的文件名)
第四个16字节与KEY校验
第五个4字节标识Y的长度
第六个Y字节就是真正的数据
![这里写图片描述](https://img-blog.csdn.net/20171206223720089?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
分析头部缺失的文件,发现这里很可疑
![这里写图片描述](https://img-blog.csdn.net/20171206224243775?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
观察总文件长度为0x61c8,刨掉头部0x2c正好就是0x619c
那么这里的4字节就是数据长度了
于是只要依据之前的6个字节,反推出key即可
首先逆向key计算流程,发现就是两次md5,再根据提示8位纯数字进行爆破即可得到密钥20160610
然后补全文件头,通过程序进行解密
![这里写图片描述](https://img-blog.csdn.net/20171206224800271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解密出的文件头是PK,zip打开后发现是doc的机构
于是再将后缀改为doc用word打开,终于得到flag
难度不算太大,但是很有意思~ chen123456 发表于 2017-12-21 14:09
刚开始我认为是公安查案呢?不错,值得学习。
{:301_1003:}这个背景我也第一次见,看起来挺厉害的。所以在题目上就写了是习题233 chenjingyes 发表于 2017-12-21 01:02
请楼主传下附件吧!
{:301_1008:}昨天传了 貌似没点使用的样子 不好意思 还可以这么玩? 请楼主传下附件吧!:lol 这个思路不错,跟着操作就可以实践一下 看着难度很大啊 真不错,能发一下附件就好了{:1_921:} WYWZ 发表于 2017-12-21 12:37
真不错,能发一下附件就好了
{:301_1008:}已经补上了 不好意思 刚开始我认为是公安查案呢?不错,值得学习。