XCTF reverse maze

一.查壳

在这里插入图片描述

二.拖入ida64,静态调试,找到主函数F5反编译

在这里插入图片描述

二.1 思路分析(逆向是真的费时间,每个函数都要分析过去):

1.发现每个if最终都会进入LABEL-15
在这里插入图片描述
点进去,看看这个函数是干啥的。
在这里插入图片描述
这里基本可以推理出a3是行,a2是列了。
那么我们的迷宫一定是一个8列的矩阵。
得知这点,退出去,再分析。

在这里插入图片描述
v9是行,SHIDWORD函数是指的下一个字节,得知这点,从上面分析可知:
就将四个函数点进去就可以判断方向了。
举个例子:

在这里插入图片描述
相对应,其他方向,O:下,o:上,0:左,.:右。
2.将迷宫打印出来,python脚本如下。

maze="  *******   *  **** * ****  * ***  *#  *** *** ***     *********"
res=""
count=0
for str in maze:
    res+=str
    count+=1
    if count%8==0:
        print(res)
        res=""

在这里插入图片描述
3.由于我们是从左上角开始的,开始我们的路线
个人感觉答案不唯一的。。。。没办法。》-《。。。
根据迷宫最后得到的flag: nctf{o0oo00O000oooo…OO}

posted @ 2020-02-05 15:43  YenKoc  阅读(456)  评论(0编辑  收藏  举报