CTF--2016XDCTF全国网络安全大赛之reverse2


0x01 题目介绍


题目名称

    reverse2

题目描述

    File: XDCTF2.exe
    Size: 195584 bytes
    File Version: 1.0.0.1
    Modified: Tuesday, March 07, 2017, 00:11:41
    MD5: 1B0EA0BD4B8DA116C7D590F05BE6692A
    SHA1: 81174B9D39D467308818B0BB0C99D427ED80EB6C
    CRC32: 4D44CF29




0x02 解题要点


先点击程序运行测试,发现一闪而过。回到cmd下面进行运行。命令行运行程序,什么也没有输出。

于是觉得奇怪,一般的破解逆向程序都有输入输出提示,或者界面等消息。




于是还是先暂时用IDA载入测试一下。找到代码部分,大理一阳指F5




进入main函数。注意红色标记部分,函数入口。


又出现了多线程,注意此处我们用的是静态分析工具,代码没有执行,

不会出现逻辑分支干扰,运行错误。如果是动态分析可能已经跟踪偏了。


注意此段参数数量为1,sub_405000经过分析是计算字符串长度。

类似于我们常见的函数strlen


这是字符串计算长度函数实体部分,里面用结束\0作为判断标志位。

返回值是result




输入参数1运算,输入参数2运算,0x38,0x66文件参数运算

Name运算完成之后会得到一个TEMP字符串

lpBuffer接收返回的路径


byte_42DECC进行异或运算之后得到读写文件标记。




注意不同的逻辑判断,参数数量1,2,3。发现在3的时候有参数数量限制,长度和比较规则。

由此判断输入必须两个参数,长度为10,而且第一个解密之后和第二个相等。





算法主要函数,以及文件写入函数路径TEMP




注意释放文件函数,由于V13必须为真,才能进入数据文件写入调用阶段。

于是网上追溯,分析获取参数1和参数2值为

user:xidian2016

password:yjejbo3127

才可以生成文件。


生成 C:\Users\ROOT\AppData\Local\Temp\firefox.tmp文件




转向研究释放的文件,一般思路直接解压或者运行不行或者错误的话,


然后点击十六进制查看,发现类似压缩包文件被破坏,于是采用修复RAR测试






修复之后测试成功,但是解压需要密码。于是猜想前面的用户和密码进行尝试,

尝试了很多次,终于发现解压密码是user+pass拼接而成。于是得到解压后的

文件内容。  

xidian2016yjejbo3127



解压出flag.info文件。我勒个去,还是有文件,不过根据名称应该距离答案很近了。

再继续研究文件类型和内容。



尝试了各种方法,包括修复文件头。还是没有找到,不甘心,想啊想。发现文件的尾部特征,

非常像wav音频文件,可以找个各类文件结构头标志参考。没有想到竟然是倒序存储。

但是却没有完整,于是还是修复,然后写代码实现流倒叙存储。于是乎打开就听到了

美妙的声音。答案就在音频里面。





修复好文件,然后自己编码写程序实现二进制流倒叙存储





倒序输出结果如下。播放,仔细听答案,多听几遍测试。




输出结果:


XDFLAG{A1B2C3SUCCESSD4F5G6}


0x03 学习总结


此题目没有提示,没有任何输出。先得逆向分析查看程序逻辑和功能。

要识别出干扰的花指令和去除冗余的代码部分。中间出现一些的错误分支。

同时有文件释放写入。此处信息关键,主要注意学习不同文件尾部和

头部特征,以及文件流式操作,最后编码逆序实现成功解题,

拿到音频答案文件。



你可能感兴趣的:(技术文章,二进制,反汇编,逆向工程,学习笔记,网络安全,逆向,二进制,安全,测试,XDCTF)