[HDCTF2019]Maze

这道题,踩了两次一样的坑,先说下遇到的麻烦,ida不能反编译成C,还有就是这道题名字的中文叫做迷宫,这个坑以前就踩过了,今天又踩了一次

首先,打开ida,查找main函数,发现在左边的函数框里,没有主函数(因为有花指令,如何消除这个的话https://blog.csdn.net/Palmer9/article/details/104157882这位师傅的博客有讲),所以到内存里找

 发现无法进行f5反编译,没办法了,打开ollydbg,进行字符串查找到主函数。

 然后进行调试,可以发现这里是一个for循环语句,并且比较14次,所以需要输入的字符串是length为14

 接着往下看可以知道,有4个分支语句,其跳转的基指令是0x401112,所以知道这里用了switch语句,并且对0x40807c与0x408078进行了加1与减1的运算

 然后查看基指令所存储的事件值

 这里我犯了个错,由于我不知道这是个迷宫题,也没去ida里的字符串去看,所以我想的是直接用两次a,与4次c就可以出正确答案,虽然congratulations了,但答案是错的,我就去查了别人的wphttps://blog.csdn.net/Palmer9/article/details/104157882才发现,原来这是到迷宫题,从而了解到了花指令。

所以在到内存中找到迷宫并进行整理

 

 +是起始点,F是终点,所以答案是ssaaasaassdddw

flag{ssaaasaassdddw}

总结一下:了解到了花指令,锻炼了od调试能力,学会了个英文单词

原文地址:https://www.cnblogs.com/pppyyyzzz/p/12873374.html