记录第一次接触逆向迷宫题,第一次接触的时候感觉很懵逼,首先不知道这是一道迷宫题,还是按一起的逆向题解法,什么该程序逻辑啊分析算法啊,再没有接触pwn之前,拿到附件就只想把题目改成我想要直观运行的样子,现在回头来看认真分析题目还是挺简单的
题目是攻防世界新手区逆向里面maze:
拿到题目如图:(我对一些重要的代码进行重命名以便了解程序)
从开头的那一部分就知道了flag的格式,很多逆向题目都是这个套路,然后下面的循环体就是循环flag中间的18个字符,上面每个函数的大概作用我都有标记,核心函数就是check函数,可以看到asc_601060这个变量里面是一个64长度的字符串,根据题目大意很快就能确定这是一个8*8的迷宫我首先将他还原成迷宫样子如图:
得到了迷宫就是确定输入什么字符去控制这个迷宫走向了。
可以看到中间有4个函数分别对v10、v9进行自增和自减操作,最后返回了一个result,这个result只在循环结束后才会进行判断,所以只要保证最后v5不为0就行,通过对v9、v10的操作可以看到它们的初始值都为0,那么就可以判断出迷宫初始位置就是0,0这个坐标,而迷宫从0,0这个位置走到终点刚好也是18步满足了我们刚好输入的18个字符。
上面了解了程序逻辑,那么从check函数可知如图:v9*8是以8的倍数自增的,那么v9就是表示行,再通过前面对输入字符的判断很快就知道解题逻辑
我通过手动完迷宫走出再一一对应字符
最终得到flag