美文网首页
CTF逆向分析(超详细)(上篇)

CTF逆向分析(超详细)(上篇)

作者: V7hinc | 来源:发表于2020-06-20 12:12 被阅读0次

    转载自http://www.360doc.com/content/18/0805/19/36367108_775922109.shtml

    近期“网鼎杯”比赛是一个比较热门的话题。为此,笔者准备复习、学习CTF的相关赛题。逆向作为CTF的高分值赛题,笔者不敢有丝毫疏忽,将要入门逆向。所以,诞生了此文。

    拿到逆向题目步骤:

    第一步:

    PEID查壳

    看二进制文件是否加壳--》比较难

    如果没有加壳:静态 、 动态

    静态分析:windows下的 IDA PRO

    动态: windows下的OD linux下的EDB、GDB

    第二步:

    逆向:

    1.破解类:

    2.算法分析: 综合性稍强(看懂 核心代码,,知道字符串如何进行比较)

    3.绕过:(难度稍大)*

    驱动保护、代码混淆、反破解

    ** 常用语言:**

    C(ida看到的一些名称空间的比较多、一些库)、C++(比C难)

    在逆向代码时,时刻关注:“关键代码”

    关键代码:从输入开始,获取flag的部分

    关键代码特征:

    1运算:对输入进行处理与或非亦或等

    2循环:一定有比较、跳转、变量的变化(对字符串的处理一定是循环)

    一个代码既有循环又有运算 -> 一定是关键代码

    我们:快速找到关键代码并对其分析

    ida:shift + f12 :找关键代码段

    比如:报错、让你输入的信息

    如果找不到关键代码,也可以设置API断点。一定会有处理你输入的东西。比如,接受完你的输入后的代码

    接下来,用一道题目来解析

    (先给大家介绍 动态 (工具:OD、记事本、计算器(作十进制、十六进制的转换)))

    image.png image.png

    首先“Please give your passcode:”

    这个东西也可以算是一个关键的代码

    image.png

    输入完就关了

    这意味着:我能看到的信息就是这样子

    首先查壳(此步省略,因为提前知道没有加壳)

    image.png

    OD下进行分析

    image.png

    第一步“中文搜索”、智能搜索

    image.png

    再一步: ctrl + f

    image.png image.png

    这个就是我的 关键信息

    image.png

    如果我的输入正确,则会执行这一步

    双击“请输入你的 passcode”

    image.png

    就会 跳到 那一步

    image.png

    我们看到了%20s

    image.png

    %20s下面紧接这的就是 scanf函数

    image.png image.png

    说明输入字符传的类型,最长 20位

    然后我们开始下断点

    image.png

    为什么在scanf下设置断点

    因为scanf函数调用完后,就会停下来接受你的输入

    双击 机器码 即可 设置断点

    image.png

    断点设置好后,就可以运行这个程序

    image.png image.png

    我们输入 1234567890

    回车

    image.png

    程序就会停在这一行

    image.png

    接下来就 单步 向下

    image.png

    这里很重要

    image.png

    move 这个操作 就是 赋值 为 0

    image.png

    state的信息也需要看,是否有没有输入

    image.png

    这是一个跳转,我们跟着跳

    image.png

    跳到这里,发现在做一个 比较

    这就是比较关键的信息了

    在和15 做比较

    image.png

    如果小于等于15

    image.png

    就跳到这里

    image.png

    如果<>

    image.png

    这就是典型的循环,有各种各样的运算

    循环的变量应该是16次0-15

    接下来 就看 循环 里作什么事情

    image.png

    单步向下

    这是一个变量的赋值

    image.png

    然后又是一个跳转

    image.png

    调到了 一个 比较

    image.png

    这是 0 和3 在做 比较

    image.png

    <>

    image.png

    又回到jump的下一行

    大概代码:

    image.png

    这是两次跳转的大致的外围结构。

    上篇先简单写到这里,作为入门基础,还请大家预习汇编指令、数据结构,才能更深入的学习逆向。

    明天发中篇,将本题的重点,以非常详细的思路写出OD的动态操作。

    上篇终。

    相关文章

      网友评论

          本文标题:CTF逆向分析(超详细)(上篇)

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