给个源码,代码审计
<?php
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){//要读取$text的文件中的内容,要读到“welcome to the zjctf"才可以。
echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
if(preg_match("/flag/",$file)){//过滤flag关键字
echo "Not now!";
exit();
}else{
include($file); //useless.php
$password = unserialize($password);//明显一个反序化。
echo $password;
}
}
else{
highlight_file(__FILE__);
}
?>
这里第一个if就用php伪协议去绕过。
就用php://input
第二个就是要读取useless.php中的内容。也用php伪协议。
?file=php://filter/read=convert.base64-encode/resource=