【发布时间】:2012-12-28 20:49:00
【问题描述】:
这是为了安全比赛,请不要对我大喊大叫:)
我正在尝试使用传递给pickle.loads() 的字符串访问局部变量。例如,我想做这样的事情:
local_var = 1
pickle.loads('''c__builtin__
eval
(c__builtin__
compile
(S"print local_var"
S"error_output_file"
S"exec"
tRtR.''')
但是,我收到以下错误:NameError: name 'local_var' is not defined
确实,当我检查局部变量时,它们与我的预期完全不同:
pickle.loads("""c__builtin__
locals
(tR.""")
给予
{'args': (),
'func': <function locals>,
'self': <pickle.Unpickler instance at 0x108af3830>,
'stack': []}
这里发生了什么,我该怎么做?
谢谢!
【问题讨论】: