美文网首页
记一次逆向--解看雪CTF之Q1第一题

记一次逆向--解看雪CTF之Q1第一题

作者: JYQC66 | 来源:发表于2019-06-20 21:50 被阅读0次

    逛FreeBuf的时候偶然看到一篇讲解CTF比赛题目的文章,才知道最近看雪论坛有CTF比赛,兴冲冲去瞅了瞅,没敢直接报名参加Q2阶段的比赛,先去试了试Q1阶段的题目,果然,都是逆向题目,第一题跟着各位大佬的文章分析了两天总算解出来了,但是第二题跟着分析文章也还走不下去,说到底还是对逆向不熟~现在先看第一题的解题思路~

    从看雪论坛ctf.pediy.com中找到CTF模块,找到晋级赛Q1,下载第一题的压缩包,解压,是个exe文件:

    我们试着运行一下,看看是个什么东东~

    明显是要输入正确的password,怎么才能验证通过呢?我们看看程序逻辑是如何实现的~

    使用IDA逆向工具加载程序:

    点击OK后,界面如下:

    粗略介绍一下各个窗口:

    Functions window:程序样本的函数窗口,列举了识别出的每一个函数

    IDA View-A:反汇编窗口,显示了IDA对程序的反汇编结果

    Hex view-1:十六进制格式显示的窗口,显示了程序内容和对应地址空间的十六进制数据,可直接对代码和数据进行修改,相当于十六进制的编辑器。

    Structures:结构体窗口,显示数据结构

    Enums:枚举窗口,显示检测到的标准枚举类型

    Imports:导入窗口,列出了被载入文件导入的所有函数

    Exports:导出窗口,列出了被载入文件的所有导出函数

    查看载入程序的strings:

    可以看到有类似于跟逻辑处理相关的字符串,双击进去看看,来到了反汇编窗口:

    在这附近看到了几个函数:

    sub_4017B0

    sub_4017F0

    sub_401890

    分别右键进行一下graph:

    看看这几个函数的前后处理顺序,发现顺序如下:

    那我们就先看看sub_401890做了什么吧。

    从Functions window窗口中找到sub_401890,点击进入后,反汇编窗口(IDA View-A)就显示出该函数的反汇编代码,为了能看懂一些,我们使用F5快捷键将它转为伪代码:

    看到for循环就知道了处理逻辑在这里:

    大写字母减29,小写字母减87,数字减48;

    然后将结果传给sub_4017F0函数:

    再看下一个sub_4017F0:

    While循环中,取aAbcdefghiabcde参数中,sub_401890传入的值所代表的位置的字符,将这串字符串跟KanXueCTF2019JustForhappy对比,相同则走sub_401770函数的处理逻辑:Pass!

    好,总结一下思路:

    假设有一个字符串A,转换为ASCII码后,将它的大写字母减29,小写字母减87,数字减48,将结果作为下标取出aAbcdefghiabcde中的值,取出的值为KanXueCTF2019JustForhappy

    要想求得字符串A,就逆回去,代码如下:

    最终结果如下:

    相关文章

      网友评论

          本文标题:记一次逆向--解看雪CTF之Q1第一题

          本文链接:https://www.haomeiwen.com/subject/neesqctx.html