记一次逆向--解看雪CTF之Q1第一题
逛FreeBuf的时候偶然看到一篇讲解CTF比赛题目的文章,才知道最近看雪论坛有CTF比赛,兴冲冲去瞅了瞅,没敢直接报名参加Q2阶段的比赛,先去试了试Q1阶段的题目,果然,都是逆向题目,第一题跟着各位大佬的文章分析了两天总算解出来了,但是第二题跟着分析文章也还走不下去,说到底还是对逆向不熟~现在先看第一题的解题思路~
从看雪论坛ctf.pediy.com中找到CTF模块,找到晋级赛Q1,下载第一题的压缩包,解压,是个exe文件:
![](https://img.haomeiwen.com/i2972564/42522030c87bed37.png)
我们试着运行一下,看看是个什么东东~
![](https://img.haomeiwen.com/i2972564/7182094fac26be2e.png)
明显是要输入正确的password,怎么才能验证通过呢?我们看看程序逻辑是如何实现的~
使用IDA逆向工具加载程序:
![](https://img.haomeiwen.com/i2972564/51292563cf16a30a.png)
![](https://img.haomeiwen.com/i2972564/774e3374bc2a61e6.png)
点击OK后,界面如下:
![](https://img.haomeiwen.com/i2972564/80137e3890a956b0.png)
粗略介绍一下各个窗口:
Functions window:程序样本的函数窗口,列举了识别出的每一个函数
IDA View-A:反汇编窗口,显示了IDA对程序的反汇编结果
Hex view-1:十六进制格式显示的窗口,显示了程序内容和对应地址空间的十六进制数据,可直接对代码和数据进行修改,相当于十六进制的编辑器。
Structures:结构体窗口,显示数据结构
Enums:枚举窗口,显示检测到的标准枚举类型
Imports:导入窗口,列出了被载入文件导入的所有函数
Exports:导出窗口,列出了被载入文件的所有导出函数
查看载入程序的strings:
![](https://img.haomeiwen.com/i2972564/8515f89a25fa0ef4.png)
![](https://img.haomeiwen.com/i2972564/b4ea259ab32d0421.png)
可以看到有类似于跟逻辑处理相关的字符串,双击进去看看,来到了反汇编窗口:
![](https://img.haomeiwen.com/i2972564/64bf3ec1c564170f.png)
在这附近看到了几个函数:
sub_4017B0
sub_4017F0
sub_401890
分别右键进行一下graph:
![](https://img.haomeiwen.com/i2972564/7723f86d96e7d275.png)
看看这几个函数的前后处理顺序,发现顺序如下:
![](https://img.haomeiwen.com/i2972564/05d37654df9665e7.png)
那我们就先看看sub_401890做了什么吧。
从Functions window窗口中找到sub_401890,点击进入后,反汇编窗口(IDA View-A)就显示出该函数的反汇编代码,为了能看懂一些,我们使用F5快捷键将它转为伪代码:
![](https://img.haomeiwen.com/i2972564/b6c20888f3c4637e.png)
看到for循环就知道了处理逻辑在这里:
大写字母减29,小写字母减87,数字减48;
然后将结果传给sub_4017F0函数:
再看下一个sub_4017F0:
![](https://img.haomeiwen.com/i2972564/a251ed604490f635.png)
While循环中,取aAbcdefghiabcde参数中,sub_401890传入的值所代表的位置的字符,将这串字符串跟KanXueCTF2019JustForhappy对比,相同则走sub_401770函数的处理逻辑:Pass!
![](https://img.haomeiwen.com/i2972564/daa5ad8573aecc2f.png)
好,总结一下思路:
假设有一个字符串A,转换为ASCII码后,将它的大写字母减29,小写字母减87,数字减48,将结果作为下标取出aAbcdefghiabcde中的值,取出的值为KanXueCTF2019JustForhappy
要想求得字符串A,就逆回去,代码如下:
![](https://img.haomeiwen.com/i2972564/a0a58983cf8aa419.png)
最终结果如下:
![](https://img.haomeiwen.com/i2972564/431f12d55e7ccd65.png)