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爷手把手教我