甘めな技術。

セキュリティ多めの甘めな技術ブログ

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で見たら一文字ずつ律儀に積まれていた。

普通にghidraからコピペ、vimsedで整形した。

他の人の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使えるようになろうと思いました。