week4-re-迷宫
迷宫
[SWPUCTF 2021 新生赛]老鼠走迷宫
我们先用die查壳
发现有一个打包工具Pylnstaller,我们可以利用pyinstxtractor.py来解决,我们先看看这个附件的文件类型,拖进010后,文件头是4D 5A 90 00,通常是可执行文件exe.
我们需要把它放在和pyinstxtractor.py一个目录下,方便操作
运行后发现多了一个文件夹
打开后,看到5.pyc和struct.pyc,将struct.pyc中的前十六位改成5.pyc中的前十六位,保存后,进行python反编译
看到这样的
根据提示,flag是最短路径的md5值
暂时无法在飞书文档外展示此内容
1 | sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwwwwaawwddwwwwaaaawwddwwwwddssssddwwwwddddwwddddssaassaassddddssddssaassssssddsssssss |
1 | 69193150b15c87d39252d974bc323217 |
这样就解决了NSSCTF{69193150b15c87d39252d974bc323217}
2019华南师大CTF新生赛maze
题目地址:https://github.com/scnu-sloth/hsctf-2019-freshmen
打开后先查壳,无加壳,我们再看一下c语言代码
暂时无法在飞书文档外展示此内容
我们进入ida,查看一下关键字
跟进,看一下函数
已知
- 42 对应字符
*
(星号) - 35 对应字符
#
(井号)
所以这个迷宫以*为墙,#为终点,@为起点,flag是迷宫的路径
在主函数中
我们看到flag的长度 为24
我们现在已知迷宫的组成,可以利用脚本描绘出迷宫的样子
暂时无法在飞书文档外展示此内容
我们也可以利用脚本得到路径
我们也可以把路径复制进入notepad中,是169个字符很显然,这是一个13*13的迷宫图
同样可以绘制出迷宫的样子,如上
根据路径,找到Flag
1 | flag{sssssdsssddsdddwwdwwaaaw} |
2020华南师大CTF新生赛maze
依旧是先查壳
在ida中查看
先看一下主函数
这里的59是限制长度,flag的最短路径
再看一下里面的createmap函数
在这个函数中,把num中的数最终转为二进制存储在map数组中,同时原本的16个字也变为了16*16=256个字
所以这道题的迷宫是16*16的矩阵,现在,我们需要知道参与循环的v2的值,这里 运用动态调试
运行十六次,最后在local页面获得十六进制字符串
1 | num = [0xFFFF, 0x83F7, 0xBBF7, 0xBB17, 0xBB57, 0xB857, 0xBF57, 0xBF17, 0xBFB7, 0xBFB7, 0x8611, 0xF7B5, 0xF7B5, 0x7B4, 0xFF87, 0xFFFF] |
再结合check函数中,迷宫的正确走法,得到正确的地图
函数中标注,正确的起点是[13,0]
这里需要我们自己根据函数生成迷宫
暂时无法在飞书文档外展示此内容
发现有空格,直接在最前面补0
暂时无法在飞书文档外展示此内容
找到最短路径
最后得到flag,在这道题目中,用ijkl表示
flag{llllkkkhhhkkkkkkkkklllljjjjllljjljjjjjjjlllkkkklljjjl}