一文看懂Python沙箱逃逸
不外要留意,2.x 才气用,3.x 删了 execfile,不外可以这样:
这个要领倒是 2.x、3.x 通用的。 不外要行使上面的这两种要领,就必需知道库的路径。着实在大大都的情形下,库都是默认路径。假如 sys 没被干掉的话,还可以确认一下,:
3. 花式处理赏罚字符串 代码中要是呈现 os,直接不让运行。那么可以操作字符串的各类变革来引入 os:
还可以操作 eval 可能 exec:
趁便说一下,eval、exec 都是相等伤害的函数,exec 比 eval 还要伤害,它们必然要过滤,由于字符串有许多变形的方法,对字符串的处理赏罚可以有:逆序、变量拼接、base64、hex、rot13…等等,太多了。。。 4. 规复 sys.modules sys.modules 是一个字典,内里储存了加载过的模块信息。假如 Python 是刚启动的话,所列出的模块就是表明器在启动时自动加载的模块。有些库譬喻 os 是默认被加载进来的,可是不能直接行使,缘故起因在于 sys.modules 中未经 import 加载的模块对当前空间是不行见的。 假如将 os 从 sys.modules 中剔除,os 就彻底没法用了:
留意,这里不能用 del sys.modules['os'],由于,当 import 一个模块时:import A,搜查 sys.modules 中是否已经有 A,假若有则不加载,假如没有则为 A 建设 module 工具,并加载 A。 以是删了 sys.modules['os'] 只会让 Python 从头加载一次 os。 看到这你必定发明白,对付上面的过滤方法,绕过的方法可所以这样:
最后尚有一种操作 __builtins__ 导入的方法,下面会具体说。 5. 花式执行函数 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |