[BUUCTF]REVERSE——[HDCTF2019]Maze

[HDCTF2019]Maze

附件

步骤:

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