buuoj-[HDCTF2019]Maze

1.winexe 32bit upx1

使用脱壳工具

这一段是红的,是ida没有为其创建函数

堆栈报错的问题,其上一条命令就是常规的动态运算反调试,40102E+1=40102F,在2F处重新生成代码即可,2E处的指令NOP掉。

jnz short near ptr loc_40102E+1跳转到下一行代码,不跳转也是下一行,花指令阻碍ida反汇编。

3.nop的opcode是0x90,将cmp到jnz也就是0040102A到0040102F的HEX改为0x90

F2或者右键apply changes保存

4.选中不能反汇编的代码,P构建函数,然后就能正常F5了

5.shift+f12能找到很多有用的字符串,结合题目名字叫做maze(迷宫),那一长串星号应该就是迷宫地图了

wasd应该就是方向了

6.不知道迷宫是怎么分段的,我选择直接暴力打表,找到看起来最像是个迷宫的:

maze='*******+********* ******    ****   ******* **F******    *********'
maze+='*****'
for j in range(2,71):
    for i in range(len(maze)):

        print(maze[i],end='')
        if (i+1)%j==0:
            print()
    print()
    print('---------------------')
    print()
    print()
    print()

是10个字符一段,得到了:

*******+**
******* **
****    **
**   *****
** **F****
**    ****
**********

得出路线:ssaaasaassdddw

7.最后直接用ida的debug模式输入路线,得到flag:

鸣谢scr1pt爷手把手教我

posted @ 2022-12-08 16:17  今天吃大鸡腿  阅读(138)  评论(0编辑  收藏  举报