【CTF】Python Jail沙箱逃逸手法总结 PyJail All in One

💡 原文中文,约33900字,阅读约需81分钟。
📝

内容提要

本文总结了Python沙箱逃逸的多种方法,包括利用os模块、subprocess、threading等执行命令的技巧,以及通过内置函数和模块进行攻击的手段。还介绍了获取函数信息、修改函数字节码和利用异常处理等技术。

🎯

关键要点

  • Python沙箱逃逸是CTF比赛中的常见场景。
  • 利用os模块执行命令的技巧包括os.system和os.popen。
  • 通过subprocess模块可以执行shell命令。
  • 使用threading模块可以在新线程中执行命令。
  • 利用multiprocessing模块可以创建新进程执行命令。
  • 使用ctypes模块可以调用系统命令。
  • 通过内置函数和模块进行攻击的手段包括exec、eval等。
  • 获取函数信息可以通过__code__属性。
  • 修改函数字节码可以使用types.CodeType。
  • 通过异常处理可以实现沙箱逃逸。
  • 获取环境信息可以使用sys和platform模块。
  • 通过删除模块和重新导入可以实现沙箱逃逸。
  • 利用Python的继承链和__globals__可以访问内置函数。
  • 使用AST模块可以解析和生成Python代码。
  • 通过装饰器和元类可以实现函数覆盖和代码执行。
  • 利用异常处理机制可以触发特定的代码执行。
  • 通过构造特定的字典和列表可以实现代码注入。
  • 使用海象表达式和字符串拼接可以绕过限制。
  • Python的垃圾回收机制可以被利用进行沙箱逃逸。
  • 通过修改内置函数和模块可以实现代码执行。
  • 利用Python的审计事件可以触发特定操作。
➡️

继续阅读