[HDCTF2019]Maze
步骤:
- 例行检查,32位程序,upx壳
- upx脱壳儿后扔进32位ida,首先检索程序里的字符串
有类似迷宫的字符串,下面也有有关flag的提示字符串,但是没法进行交叉引用跳转 - 查看main函数,没法f5,看汇编,下方有个奇怪的jnz指令,它跳转到了下一行,相当于没跳
- 它call了一个奇怪的地址,ida没法分析出来,百度后得知这个叫花指令,nop掉
- 之后就是这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5)。按d将其先转换为字节数据。
- 仍然没法f5,说明还存在花指令,在上述的花指令的链接中,那篇博主总结了花指令的常见情况,知道了db 0E8h是添加花指令,继续nop掉
nop掉之后IDA自动的将后面的数据转换为代码数据
- 此时数据地址是红色的,仍然没法f5反汇编,将关键代码全部选中,按p键将其声明为函数
然后就可以F5伪代码了
输入的长度为14,然后要让dword_408078=5,40807c=-4,然后w表示上,s表示下,a表示左,d表示右 - 这是一道迷宫题,先打印一下字符
按照迷宫题的经验,应该是从一个字符走到另一个字符,这边从+走到F,所以路径是–>下下左左左下左左下下右右右上,也就是–>ssaaasaassdddw,检验一下,符合条件
flag{ssaaasaassdddw}