一种py注入的ctf解题思路
目前常见的python题都会使用PyInstaller,Nuitka等工具进行打包

常用的解题思路也是先解包反编译pyc等进行分析
然而这里有一种不同于逆向解包的方式来解题
Python注入!!!
PyInjector使用
pyInjector - 将 Python 代码注入到任何 Python 进程中,或在目标进程内生成交互式 Python shell。
如何使用呢?
下载PyInjector到本地,解压出其中的dll
将
目标exe和code.py两个文件放在同一目录下。
在
code.py中编写脚本
如jsprint("Hello from injected code.py")运行目标程序
使用Process Hacker 2 (一个魔改的systeminformer)进行dll注入
确保目标程序在运行中,右键目标进程选择
Miscellaneous/Inject DLL..
找到刚刚解压的pyInjector的dll,根据系统选择注入的dll

可以看到注入的瞬间执行了code.py

每次执行代码只需注入一次dll
不仅如此,注入的环境就是该程序当前运行环境
因此我们可以做到
打印
全局变量jsprint(dir())
如果是
PyInstaller可以看到main函数了_pyi_main_co由此我们就可以直接dis出字节码了
jsimportdisdis.dis(_pyi_main_co)
如果是
Nuitka,我们不能dis出代码Nuitka 将 Python 代码转换为本地代码,而 Python 的反汇编器无法反汇编这种本地代码。
因此我们只能获取到本地的变量
比如这个题我们打印
dir(),发现了enc_flag和key,同时题名叫XOR于是就猜测简单异或,可以得出flag

附件
这次记得了要上传附件
XOR.exe Nuitka
这个是来自FurryCTF2025的POFP战队AA师傅出的题
https://bluestars.lanzouu.com/iAf2C3hfoa4j
NotNormalExe.exe PyInstaller
这个是来自NewStar的好像是PangBai师傅出的题
https://bluestars.lanzouu.com/ivwkv3hfoauf
*封面的图片使用figma随便画的()