0%

buuctf_Maze

Maze

1.首先PEid查壳,查到是UPX的壳

image-20211011192051606

2.UPX脱壳,之前在网上找脱壳工具,但是其实UPX是开源的,在github上下载后,在cmd下执行upx -d yourfile.exe就可以脱壳,拖进IDA是下面的样子,发现f5不能查看伪代码,再看左边的函数栏,没有main函数。

image-20211011195316028

网上搜索后发现是加了花程序

image-20211011195716680

查看上图的jnz跳转到了下一行代码。相当于没有跳转,接下来的call调用的一个不是地址的地址,网上的方法是将jnz指令nop掉(nop指令也就是控指令,执行的时候不做任何事,有时候可用于短接某些触点或用nop指令将不要的指令覆盖掉

3.先将jnz指令nop掉(Edit->Patch program->Assemble),因为call后面很有可能事有用的数据,所以用d先转换为数据,jnz后面的也是花指令,所以应该把该数据包的高字节部分也nop掉,但是IDA总是不成功,所以用OD,修改后右键复制到可执行文件,然后右键保存

image-20211011201009496

image-20211011203812041

image-20211011203847749

4.拖进IDA反汇编,这个代码逻辑比较简单,wsad其实就是玩游戏的上下左右,

初始dword_408078=7,dword_40807c = 0,需要经过十四次移动修改两个变量为5和-4,按照迷宫题目的经验应该有地图或者字符。提取出来自己排列一下

flag{ssaaasaassdddw}

image-20211012094241147

image-20211012154856963

image-20211012154814391