迷宫

[SWPUCTF 2021 新生赛]老鼠走迷宫

我们先用die查壳

img

发现有一个打包工具Pylnstaller,我们可以利用pyinstxtractor.py来解决,我们先看看这个附件的文件类型,拖进010后,文件头是4D 5A 90 00,通常是可执行文件exe.

我们需要把它放在和pyinstxtractor.py一个目录下,方便操作

img

运行后发现多了一个文件夹

img

打开后,看到5.pyc和struct.pyc,将struct.pyc中的前十六位改成5.pyc中的前十六位,保存后,进行python反编译

img

img

看到这样的

img

根据提示,flag是最短路径的md5值

暂时无法在飞书文档外展示此内容

1
sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwwwwaawwddwwwwaaaawwddwwwwddssssddwwwwddddwwddddssaassaassddddssddssaassssssddsssssss

img

1
69193150b15c87d39252d974bc323217

这样就解决了NSSCTF{69193150b15c87d39252d974bc323217}

2019华南师大CTF新生赛maze

题目地址:https://github.com/scnu-sloth/hsctf-2019-freshmen

打开后先查壳,无加壳,我们再看一下c语言代码

暂时无法在飞书文档外展示此内容

我们进入ida,查看一下关键字

img

跟进,看一下函数

img

img

已知

  • 42 对应字符 *(星号)
  • 35 对应字符 #(井号)

所以这个迷宫以*为墙,#为终点,@为起点,flag是迷宫的路径

在主函数中

img

我们看到flag的长度 为24

我们现在已知迷宫的组成,可以利用脚本描绘出迷宫的样子

暂时无法在飞书文档外展示此内容

img

我们也可以利用脚本得到路径

我们也可以把路径复制进入notepad中,是169个字符很显然,这是一个13*13的迷宫图

同样可以绘制出迷宫的样子,如上

根据路径,找到Flag

1
flag{sssssdsssddsdddwwdwwaaaw}

2020华南师大CTF新生赛maze

依旧是先查壳

在ida中查看

先看一下主函数

img

这里的59是限制长度,flag的最短路径

再看一下里面的createmap函数

img

在这个函数中,把num中的数最终转为二进制存储在map数组中,同时原本的16个字也变为了16*16=256个字

所以这道题的迷宫是16*16的矩阵,现在,我们需要知道参与循环的v2的值,这里 运用动态调试

img

运行十六次,最后在local页面获得十六进制字符串

1
num = [0xFFFF, 0x83F7, 0xBBF7, 0xBB17, 0xBB57, 0xB857, 0xBF57, 0xBF17, 0xBFB7, 0xBFB7, 0x8611, 0xF7B5, 0xF7B5, 0x7B4, 0xFF87, 0xFFFF]

再结合check函数中,迷宫的正确走法,得到正确的地图

img

函数中标注,正确的起点是[13,0]

这里需要我们自己根据函数生成迷宫

暂时无法在飞书文档外展示此内容

发现有空格,直接在最前面补0

暂时无法在飞书文档外展示此内容

找到最短路径

img

最后得到flag,在这道题目中,用ijkl表示

flag{llllkkkhhhkkkkkkkkklllljjjjllljjljjjjjjjlllkkkklljjjl}