Python模块注入技术简析
💡
原文中文,约4700字,阅读约需12分钟。
📝
内容提要
这段文本分享了一个神奇的Python代码,可以将自身编译成pyc文件并加载。使用zipimport模块将pyc文件中的unused值识别为zip文件,并解析其中的__main__.py字节码。通过runpy.run_code()执行字节码,输出'hacked lol'。作者提到了调用栈和zip文件格式的参考链接。可以自制类似的PoC,将代码放入zip文件中即可。
🎯
关键要点
- 分享了一段Python代码,可以将自身编译成pyc文件并加载。
- 使用zipimport模块识别pyc文件中的unused值为zip文件,并解析__main__.py字节码。
- 通过runpy.run_code()执行字节码,输出'hacked lol'。
- PoC执行时将自身编译成pyc再加载,使用zipimport模块。
- unused的前4字节是zip文件的magic number,作者故意不以可打印字符显示。
- 最简方案是将想执行的代码放入__main__.py,再压缩成zip文件。
- 可以自制类似的PoC,将代码放入zip文件中即可。
- 提供了zip文件格式和Python调用栈的参考链接。
- 通过gdb调试Python解释器得到的调用栈回溯,分析了zipimport的工作原理。
- 版权声明指出内容的版权归绿盟科技所有,未经授权不得使用。
➡️