SECCON CTF 2022
· 約2分
今回は時間が取れなかった事もありますが私は前回と同じくweb1問のみ解きました。
1問しか解いていないのに189/726位でした
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}