2022网刃杯CTF - REVERSE - squid

附件下载

squid 密码: ubgs

一、信息搜集

1. 基本信息

在这里插入图片描述

2. 字符串信息

在这里插入图片描述
根据字符串信息,初步可以判断是pyinstaller打包的ELF程序。

3. 运行

注意:运行时千万不要和其他文件放在同一个文件夹!!!
注意:运行时千万不要和其他文件放在同一个文件夹!!!
注意:运行时千万不要和其他文件放在同一个文件夹!!!

3.1 第一次运行

在这里插入图片描述
查看生成的Readme.txt文件内容
在这里插入图片描述
说是勒索病毒,让我们不要再运行了。
没关系,打好快照,不怕,再次运行。

3.2 第二次运行

在这里插入图片描述
可以看到文件的后缀名被改为了.WNCRY,如果当前目录存在其他文件和文件夹的话,后缀名也会被修改(血的教训)。
但好在它只是改了文件的后缀,并非真的勒索病毒,虚晃一枪。

3.3 第三次运行

在这里插入图片描述
可以看到,即使被修改了后缀名的文件,依然是可以运行的,文件内容没变。

二、解题思路

1. 解包

首先使用pyinstxtractor进行解包。
在这里插入图片描述
解出的内容如下:
在这里插入图片描述

2. 修复pyc文件头

使用struct.pyc的文件头修复squid.pyc的文件头
在这里插入图片描述
修复后:
在这里插入图片描述

3. pyc反编译

使用python的uncompyle6模块对pyc文件进行反编译。
在这里插入图片描述
在这里插入图片描述
不难发现重点在于squid_game这个模块的get_delbat方法,但在目录中并不存在squid_game.pyc或相关文件。

使用grep搜索一下:
在这里插入图片描述
发现除了squid.py引用了这个字符串,PYZ-00.pyz也包含这个字符串,猜测squid_game模块是被打包在了PYZ-00.pyz中。

根据以前的经验,猜测出题人肯定使用了带-key参数的pyinstaller进行打包,因此找了半天的pyiboot00_crypto_key.pyc文件。

最后发现这道题并没有使用-key参数。

4. 分析PYZ-00.pyz

根据看雪论坛的一篇文章,可以使用pyinstaller模块自带的一个工具分析pyz文件。

首先使用archive_viewer分析文件内容,分析结果和之前解包的内容大致相同。
在这里插入图片描述
这个工具也提供了三个选项,分别用于U:展示列表O:打开文件X:解包文件
在这里插入图片描述
使用O选项查看PYZ-00.pyz包含的内容:
在这里插入图片描述
在列表中成功找到了squid_game模块:
在这里插入图片描述
尝试使用X选项将它提取出来:
在这里插入图片描述

然后修复squid_game.pyc的文件头:
在这里插入图片描述
再使用uncompyle6进行反编译:
在这里插入图片描述
成功读到了源码:
在这里插入图片描述
发现关键在于get_time函数,对四个flag进行了切片重组,重组后的内容就是flag。

将关键代码复制出来稍加修改,执行一遍就能得到flag:

a = 'flag{c4ca4238a0b923820dcc509a6f75849b}'
b = 'flag{c81e728s9d4c2f636f0f7f89cc14862c}'
c = 'flag{eccbc87e4b5ce2fe28308fd9fsa7baf3}'
d = 'flag{a87ff679a2f3e71d9181a67b7542122c}'
flag = a[0:8] + b[9:14] + c[6:20] + d[-1:]
print(flag)

在这里插入图片描述

参考资料

看雪论坛:[原创]Python逆向——Pyinstaller逆向

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值