题目
一个有花指令的题目
- 题目链接: https://buuoj.cn/challenges#
- [HDCTF2019]Maze
题解
首先尝试运行
runn.png
使用exeinfo
查壳,显示upx壳。
使用IDA Pro进行分析,发现尾部跳转,进行脱壳。
unpack.png
脱壳完毕后拖进IDA Pro中分析 寻找main函数没有找到 查看start函数。找到了_main
函数,但是functionns
窗口并没有识别,进入_main
函数。
jnz.png
发现有很多不识别的命令,这里被当作数据处理,查看0x40102C
处的jnz
命令,这个jnz
指令跳转到临近的一个地址 ,而这个地址上又是一个call,之后的数据都不被识别为OP Code,可以发现这里是常见的花指令。
cmp eax, ecx
jnz local
这是一种常见的无条件跳转,同样的道理下面这种形式也是可以的。
xor eax, eax
jz local
将E8给nop掉,下面的部分转还成Code以后如下。
02.png保存修改,推出IDA Pro,然后重新打开,找到_main
函数,直接查看伪代码。
现在就很清晰,就是个走迷宫,一共14步,初始坐标(7,0),最终坐标(5,-4),我的策略是先走到终点,再走来会走几步重复的来凑步数。
aasssssssswwww
06.png而且查看字符串时可以看到迷宫提示,先把F给定位到,F前面有四行,而且时第五行的第六个字母(是从0开始计数的)第五行确定以后,前面还有四十个字母,有四行,那么每一行就是十个字母,所以我们可以把这个迷宫给还原。
04.png*******+**
******* **
**** **
** *****
** **F****
** ****
**********
从+走到F就行,w:上;s:下;a:左;d:右,ssaaasaassdddw
得到flag
05.png
网友评论