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

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

web

skipinx

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

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

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

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

Express 4.x - API リファレンス

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

Query string | Node.js v19.1.0 Documentation

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

Congratz! You got a flag: SECCON{sometimes_deFault_options_are_useful_to_bypa55}