首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

从沙盒逃逸看Python黑科技(下篇)

dir内置函数可以列出一个模块/类/对象下面所有的属性和函数,查看一下__builtins__中的函数: >> dir(__builtins__)[['ArithmeticError', 'AssertionError...为什么dir可以查看__builtins__ 函数呢?本质上是每个模块/类/对象/ 有一个__dict__ 字段,通过遍历 __dict__ 得到里面包含的属性和函数。...由于内置模块中的危险函数过多,比如eval,exec等,导致上文使用的沙箱对__builtins__进行了处理,通过 del 关键字将里面的所有函数引用都删除了。 del __builtins__....__dict__['xxx'] 如果保留reload内置函数,我们还可以通过 reload( __builtins__) 恢复,但是现在通过__builtins__来进行逃逸已经不现实了。...,既然__builtins__中的引用没了,那我们就需要从其他地方找到敏感函数的引用,从而实现逃逸。

1.3K30

Python中eval带来的潜在风险,你知道吗?

__"] = None eval(users_str, env) Python中的__builtins__是内置模块,用来设置内置函数的模块。...比如熟悉的abs,open等内置函数,都是在该模块中以字典的方式存储的,下面两种写法是等价的: >>> __builtins__.abs(-20) 20 >>> abs(-20) 20 我们也可以自定义内置函数...__builtins__是__builtin__的一个引用,在__main__模块下,两者是等价的: >>> id(__builtins__) 3549136 >>> id(__builtin__) 3549136...__name__ == 'Quitter'][0](0)()", {'__builtins__':None}) C:/> 如果运气好,遇到对方程序中导入了os等敏感模块,那么Popen就可以用,并且绕过...04 拒绝服务攻击2 同样,我们甚至可以绕过__builtins__为None,造成一次拒绝服务攻击,Payload(来自老外blog)如下: >>> eval('(lambda fc=(lambda

2.8K80

python0010_hello_world_unix_c历史迷因

__​​ 这个模块这 ​​__builtins__​​ 里面又有些什么呢?...dir()​dir(__builtins__)​注意前后都是两个下划线​编辑​__builtins__​​ 意思是在里面构建好的这里面有好多内置的函数包括我们熟悉的exit()print()dir()help...()为什么print直接就能用因为他在默认的这个​​__builtins__​​模块中​编辑如果我想要查询print函数更详细的信息应该如何呢?...help(print)什么不会就help什么​​help(print)​​把函数名作为参数传进去​编辑类似的还可以查询help(quit)help(dir)help(help)如果我想要查询__builtins...help(__builtins__)​​​help(__builtins__)​注意内置模块builtins左右各有两个下划线​编辑我们可以查询到​​__builtins__​​模块的帮助文件返回的这些函数和子模块都隶属于

69010
领券