吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2639|回复: 11
收起左侧

[CTF] [SWPUCTF 2021 新生赛]老鼠走迷宫(详细版

[复制链接]
Zer0o 发表于 2023-10-14 18:59
本帖最后由 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开头是什么文件

2685364-20231014140904744-190216879.png

MZ开头的是.EXE可执行文件

2685364-20231014140904740-439674590.png

修改后缀

2685364-20231014140904738-469841126.png

查壳

64位,无壳,但是该exe是被pyinstaller打包后得到的,我们需要将exe转换为py形式

2685364-20231014140904873-751795518.png

python反编译

pyinstxtractor.py自行下载,在这个页面打开cmd

2685364-20231014140904718-1759574892.png

使用pyinstxtractor.py反编译exe文件,命令如下:

python pyinstxtractor.py 可执行文件exe的地址

2685364-20231014140904739-1964833244.png

在当前文件夹会多出一个文件夹

2685364-20231014140905140-1288298971.png

可以看到可疑的文件5,struct

2685364-20231014140905287-1347752751.png

这里我们需要先将文件5和struct加上后缀.pyc,因为后续需要进行.pyc反编译成.py文件(其实struct可要可不要,struct的作用就是给5.pyc补齐前面缺失的十六进制数值,将其他的正常的.pyc文件替换struct.pyc也可以,因为我发现.pyc文件的前16位数值都是一样的)

2685364-20231014140905179-1928433929.png

在winhex打开两个pyc文件,将struct的前16位十六进制数复制到5.pyc开头

2685364-20231014140905262-385911506.png

2685364-20231014140905224-2067188335.png

记得保存

2685364-20231014140905187-1278854249.png

将5.pyc文件反编译成.py文件,网址:https://tool.lu/pyc/

2685364-20231014140905231-885732947.png

down下来,得到一个python文件,由于maze占代码篇幅太长了,不便展示,感兴趣自行下载,下载链接:https://wwvc.lanzouj.com/inUHm1bub3li[/color]
这里我放一点图片,微改一下代码,使maze能一行一行的输出
image.png

image.png

在maze下面添加一个for循环,输出maze,会报错,把最下面的return none直接删了,这不是重点不要紧

image.png

修改之后的代码,可以直接输出maze

[Python] 纯文本查看 复制代码
[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1]
[1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1]
[1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1]
[1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1]
[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1]
[1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]
[1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1]
[1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]
[1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1]
[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1]
[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1]
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

迷宫最短路径

2685364-20231014140905165-1549376212.png

使用wasd表示最短路径就是(一定不要忘了最后一个 * 还需要往下走一个才到达终点,我服,看了半天才找到这个错误):

sssssddssddssaaaassssddwwddddssssssaawwaassssddssaassddddwwddssddwwwwwwwwaawwddwwwwaaaawwddwwwwddssssddwwwwddddwwddddssaassaassddddssddssaassssssddsssssss

根据python里面的内容,flag是用wasd表示的最短路径的md5值
2685364-20231014140905182-1200777014.png

取32位小写,69193150b15c87d39252d974bc323217
2685364-20231014140905270-1291527271.png

flag:NSSCTF{69193150b15c87d39252d974bc323217}

免费评分

参与人数 6威望 +1 吾爱币 +25 热心值 +6 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
浑浑噩噩的人呐 + 1 + 1 热心回复!
13613105079 + 1 + 1 用心讨论,共获提升!
xieyulei + 1 + 1 我很赞同!
Yifan2007 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Shimmer666 发表于 2023-10-14 23:28
牛!!!!!!!
爱飞的猫 发表于 2023-10-15 04:35
把提取的代码格式化一下吧,一行一两个字读起来也太难受了…
少年郎向前望 发表于 2023-10-15 08:09
13613105079 发表于 2023-10-15 10:42
厉害大佬,学习一下
880307 发表于 2023-10-15 11:30
看不懂 就你图多 给你点赞、
 楼主| Zer0o 发表于 2023-10-15 12:15
爱飞的猫 发表于 2023-10-15 04:35
把提取的代码格式化一下吧,一行一两个字读起来也太难受了…

收到,已改

免费评分

参与人数 1吾爱币 +1 收起 理由
爱飞的猫 + 1 谢谢@Thanks!

查看全部评分

romoi 发表于 2023-10-15 16:50
感谢大佬指点!
tly111222 发表于 2023-10-16 08:22
教程不错。
clyy 发表于 2023-10-16 17:49
厉害了 大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 07:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表