CTF 一些简单逆向思路

上周总结了部分简单杂项题思路,这周总结UNCTF和BUUCTF上简单逆向问题.

通过做题发现逆向题有一些大致的做题思路:

第一步

则是通过查壳工具(PEID)检查文件属性及是否带壳,有壳则要用特定的去壳工具(upx)去壳。

CTF 一些简单逆向思路_第1张图片

 就如BUUCTF中逆向一题,查看是无壳的,则可以进行下一步

第二步

使用IDA等工具打开,进行反汇编得到伪代码,找到main函数或一些特殊的函数,或使用搜索获得字符串,然后进行分析

CTF 一些简单逆向思路_第2张图片

第三步

比如BUU中逆向二题,经过反汇编得到伪代码并进行分析,分析常常涉及一些算法逻辑,特殊加密(base64,url),汇编指令等等,较明显的有snert的逆向二题,是一道典型的"迷宫问题"如下:

CTF 一些简单逆向思路_第3张图片

CTF 一些简单逆向思路_第4张图片

 1,2,,3,4分别对应上下左右,从*开始到#,碰到1则结束,则可通过遍历得到flag

*第四步

脚本编写,通常一些题给出算法比较难以直接看出flag,这就需要用python编写一些工具脚本从而进行快速解题,较典型的是此次unctf逆向第一题,起初也是根据函数算法一个个推来的,后来尝试编写脚本解题

CTF 一些简单逆向思路_第5张图片

v5=[0]
for i in range(9):
    v5.append(0)
v5[0] = 118
v5[1] = 103
v5[2] = 112
v5[3] = 107
v5[4] = 99
v5[5] = 109
v5[6] = 104
v5[7] = 110
v5[8] = 99
v5[9] = 105

def aaaa(a1):
    if a1==109:
        return 109
    if a1<=111:
        if a1<=110:
            a1-=2
    else:
        a1+=3
    return a1

flag=""
for i in v5:
print aaaa(i)
flag+=chr(aaaa(i))
print (flag)

你可能感兴趣的:(学习方法)