[SWPUCTF 2021 新生赛]老鼠走迷宫(详细版
本帖最后由 Zer0o 于 2023-10-15 12:12 编辑# 附件下载
https://wwvc.lanzouj.com/iYLez1br84jg
# 解题思路
● 用pyinstxtrator解析exe
● 重点:将无后缀的5先修改后缀为pyc,然后随便找一个pyc文件补齐5.pyc的前16位十六进制数值(这道题以struct.pyc为例)
● 将.pyc反编译为.py
● 找到maze,从而找到最短路径
# 改后缀
下载附件,拿到一个无后缀的文件,丢入winhex里看看,发现是MZ开头的,去搜MZ开头是什么文件
MZ开头的是.EXE可执行文件
修改后缀
# 查壳
64位,无壳,但是该exe是被pyinstaller打包后得到的,我们需要将exe转换为py形式
# python反编译
pyinstxtractor.py自行下载,在这个页面打开cmd
使用pyinstxtractor.py反编译exe文件,命令如下:
python pyinstxtractor.py 可执行文件exe的地址
在当前文件夹会多出一个文件夹
可以看到可疑的文件5,struct
这里我们需要先将文件5和struct加上后缀.pyc,因为后续需要进行.pyc反编译成.py文件(其实struct可要可不要,struct的作用就是给5.pyc补齐前面缺失的十六进制数值,将其他的正常的.pyc文件替换struct.pyc也可以,因为我发现.pyc文件的前16位数值都是一样的)
在winhex打开两个pyc文件,将struct的前16位十六进制数复制到5.pyc开头
记得保存
将5.pyc文件反编译成.py文件,网址:https://tool.lu/pyc/
down下来,得到一个python文件,由于maze占代码篇幅太长了,不便展示,感兴趣自行下载,下载链接:https://wwvc.lanzouj.com/inUHm1bub3li
这里我放一点图片,微改一下代码,使maze能一行一行的输出
在maze下面添加一个for循环,输出maze,会报错,把最下面的return none直接删了,这不是重点不要紧
修改之后的代码,可以直接输出maze
Mice walk in a maze: wasd to move,q to quit
flag is the shortest path's md5,example:if the shortest path is wasdsdw,the flag is md5('wasdsdw')
接下来可以自己慢慢找,也可以写脚本,我直接从佬:https://blog.csdn.net/qq_42880719/article/details/120581571,那拉的脚本,可以直接输出迷宫的最小路径,点击下载
https://wwvc.lanzouj.com/ilelu1bs1xpa
迷宫最短路径
使用wasd表示最短路径就是(一定不要忘了最后一个 * 还需要往下走一个才到达终点,我服,看了半天才找到这个错误):
sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwwwwaawwddwwwwaaaawwddwwwwddssssddwwwwddddwwddddssaassaassddddssddssaassssssddsssssss
根据python里面的内容,flag是用wasd表示的最短路径的md5值
取32位小写,69193150b15c87d39252d974bc323217
flag:NSSCTF{69193150b15c87d39252d974bc323217} 牛!!!!!!! 把提取的代码格式化一下吧,一行一两个字读起来也太难受了… 挺有意思的 厉害大佬,学习一下 看不懂 就你图多 给你点赞、 爱飞的猫 发表于 2023-10-15 04:35
把提取的代码格式化一下吧,一行一两个字读起来也太难受了…
收到,已改 感谢大佬指点! 教程不错。 厉害了 大佬
页:
[1]
2