Gly*_*can 3 python security code-injection
我正在研究几种情况,即接受几乎原始的代码会更加容易.所以,
另外,如果有人可以想到这样的expr给出d = {key:value,...}:expr.format(key)== d [key],那么B是必要的
不改变格式的外观.
Fre*_*Foo 13
你可以用表达式做的最糟糕的事情是
__import__('os').system('rm -rf /')
Run Code Online (Sandbox Code Playgroud)
如果服务器进程正在运行root
.否则,您可以填充内存并使进程崩溃
2**2**1024
Run Code Online (Sandbox Code Playgroud)
或者通过执行shell fork炸弹使服务器暂停:
__import__('os').system(':(){ :|:& };:')
Run Code Online (Sandbox Code Playgroud)
或者在Python本身执行一个临时的(但足够破坏性的)fork炸弹:
[__import__('os').fork() for i in xrange(2**64) for x in range(i)]
Run Code Online (Sandbox Code Playgroud)
扫描__import__
无济于事,因为有无数种方法可以实现,包括
eval(''.join(['__', 'im', 'po', 'rt', '__']))
getattr(__builtins__, '__imp' + 'ort__')
getattr(globals()['__built' 'ins__'], '__imp' + 'ort__')
Run Code Online (Sandbox Code Playgroud)
请注意,eval
和exec
函数也可用于以间接方式创建上述任何内容.如果要在服务器上进行安全表达式评估,请使用ast.literal_eval
.