はまやんはまやんはまやん

hamayanhamayan's blog

had-a-bad-boy [BSidesSF 2020 CTF Web]

https://ctftime.org/task/10522

前提知識

  • LFI(Local File Injection)

解説

犬と猫を押すと、
https://had-a-bad-day-5b3328ad.challenges.bsidessf.net/index.php?category=meowers
のようにカテゴリー部分が異なって出てくる。
カテゴリーに指定したファイルをとってきているのではないか?LFIか?

変えてみると、woofersmeowers以外は受け付けないようだ。
ダメという文字が出てくるので、なんらかのフィルタリングを行っているようなので、これをエスパーする。
meowersaみたいに後ろ文字を付けてみると、警告が表示される。
先頭一致か?と思ったが色々やつとどっかにあればいいみたい。
どちらにしろ、includeが使われているみたいなのでLFIで突破は正しそうだ。
ついでに.phpが後ろにつけられることもわかる。

meowers/../flagをやってみる。
すると何も表示されない。
これは何?
Szarny.io
ここを見るとPHPとして評価されているため、表示されないらしい。
なるほど。

なので、php://filter/convert.base64-encode/resource=meowers/../flagとすることでbase64
取り出してみる。

<!-- Can you read this flag? -->
<?php
 // CTF{happiness_needs_no_filters}
?>