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下面进行运行。命令行运行程序,什么也没有输出。

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


CTF--2016XDCTF全国网络安全大赛之reverse2_第1张图片



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


CTF--2016XDCTF全国网络安全大赛之reverse2_第2张图片



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


CTF--2016XDCTF全国网络安全大赛之reverse2_第3张图片

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

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

CTF--2016XDCTF全国网络安全大赛之reverse2_第4张图片


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

类似于我们常见的函数strlen


CTF--2016XDCTF全国网络安全大赛之reverse2_第5张图片

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

返回值是result


CTF--2016XDCTF全国网络安全大赛之reverse2_第6张图片



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

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

lpBuffer接收返回的路径


CTF--2016XDCTF全国网络安全大赛之reverse2_第7张图片

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


CTF--2016XDCTF全国网络安全大赛之reverse2_第8张图片



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

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




CTF--2016XDCTF全国网络安全大赛之reverse2_第9张图片


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



CTF--2016XDCTF全国网络安全大赛之reverse2_第10张图片

CTF--2016XDCTF全国网络安全大赛之reverse2_第11张图片


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

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

user:xidian2016

password:yjejbo3127

才可以生成文件。


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


CTF--2016XDCTF全国网络安全大赛之reverse2_第12张图片



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


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



CTF--2016XDCTF全国网络安全大赛之reverse2_第13张图片


CTF--2016XDCTF全国网络安全大赛之reverse2_第14张图片



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

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

文件内容。  

xidian2016yjejbo3127

CTF--2016XDCTF全国网络安全大赛之reverse2_第15张图片



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

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


CTF--2016XDCTF全国网络安全大赛之reverse2_第16张图片


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

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

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

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



CTF--2016XDCTF全国网络安全大赛之reverse2_第17张图片



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





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


CTF--2016XDCTF全国网络安全大赛之reverse2_第18张图片


CTF--2016XDCTF全国网络安全大赛之reverse2_第19张图片


输出结果:


XDFLAG{A1B2C3SUCCESSD4F5G6}


0x03 学习总结


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

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

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

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

拿到音频答案文件。



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