メインコンテンツまでスキップ

SECCON CTF 2022

· 約2分
maa123
maa123

今回は時間が取れなかった事もありますが私は前回と同じくweb1問のみ解きました。

1問しか解いていないのに189/726位でした alt text

web

skipinx

去年のgormと同様にライブラリの仕様を確認することで解ける問題でした。

nginxはクエリ文字列にproxy=nginxを追加し、本体ではproxyにnginxがあればアクセスを拒否していました。

nginxのコンテナしかportが公開されていないので回避してアクセスすることは難しそうで、このproxyのクエリの処理を通り抜ける必要がありそうでした。

Expressを使用してクエリ文字列を取得しているのでexpressのドキュメントを確認し、これはデフォルトではnodejsのquerystringを用いてパースしていました。

https://expressjs.com/ja/api.html#req.query

こちらもドキュメントを確認すると、パースするクエリのキーの上限はデフォルトでは1000であると記載されていました。

https://nodejs.org/api/querystring.html

リクエストを送信する際にproxy=null等を含めてキーを1000個埋めた状態にしてやればnginxが末尾に付与するproxy=nginxはパースされなくなるのでこれを回避してアクセスすることができ、flagが得られました。

Congratz! You got a flag: SECCON{sometimes_deFault_options_are_useful_to_bypa55}