#php伪协议 #利用伪协议 #filegetcomtent用phpinput绕过 #PHP对于函数调用的语法问题
<?php
error_reporting(0);
$text = $_GET["text"];
$file = $_GET["file"];
if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){
echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
if(preg_match("/flag/",$file)){
die("Not now!");
}
include($file); //next.php
}
else{
highlight_file(__FILE__);
}
?>
达成text的条件 (第一关)
方法一
我们要让text的内容为 I have a dream
它是用file_get_contents 读取的
- ! 我们遇到file_get_contents()要想到用php://input绕过。
对于file_get_contents($text,'r')==="I have a dream")
利用[[PHP伪协议]] 中的php://input,格式如下
POST /..?参数=php://input
...
php代码
php://input是个可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行。
我们去读取next.php
方法二
- $ 我们利用data伪协议
payload:
?text=data://text/pain,I have a dream