[SECCON Beginners CTF 2021] check_url
Have you ever used curl ? 想定難易度: Easy
問題
https://check-url.quals.beginners.seccon.jp/ URLとソースコードを与えられます。
※
check-url-source.pngは移行元に含まれていないため、画像を掲載できていません。
解法
ソースコードから接続元がローカルであればフラグをもらえます。 それ以外の場合はcurlで取得したページをそのまま出力してきます。
問題の厄介な所はURLがlocalhostやapacheを含んでいるとスクリプトがdieします。
あとは /[^a-zA-Z0-9\/:]+/u以外の文字を含んでいると、スーパーサニタイジングの影響により該当部位が👻(文字)になります。
上記のことを踏まえるとこの問題は文字だけでローカルホストにアクセスしろということになります。
スーパーサニタイジングがそこまでスーパーだとは思ってなかったので普通にリダイレクトサーバーを建てて凸ったら乙りました。
ということでループバックアドレスをlocalhostやapache、またはドット等の記号も使用せずに記述しろということになっているので、 なんかIPって10進数とか以外の書き方で面白大会みたいなのやってたなという記憶がヒットしたため、以下のQiitaを参照しました
https://qiita.com/naka_kyon/items/88478be20b300e757fc0
16進数やら8進数やら、10進数区切り無し表記やら色々面白い書き方が紹介されています。 これの確か8進数をurlクエリに食わせてやるとループバックしてフラグをもらえます。
flag
ctf4b{5555rf_15_53rv3r_51d3_5up3r_54n171z3d_r3qu357_f0r63ry}