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的工作原理。
  • 版权声明指出内容的版权归绿盟科技所有,未经授权不得使用。
➡️

继续阅读