<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {$page=str_replace("php://", "", $page);#查找php://,null替换查找的值,并且规定搜索$page
}
include($page);
?>
strstr函数
strstr(str1,str2) 函数,判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回null。
str_replace函数
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
语法:str_replace(find,replace,string,count)
$page=str_replace("php://", "", $page);#查找php://,null替换查找的值,并且规定搜索$page
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。一个变量,对替换数进行计数。 |
这题过滤了php://,在这里我们得先了解一下什么是php://,以及php提供的各种杂项输入输出流
php://(访问各个输入/输出流),提供了IO流允许访问 PHP 的输入输出流、标准输入输出和错误描述符,内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。如php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。如php://input、php://output,php://input是一个可以访问请求的原始数据的只读流,构造payload
这里存在一个远程文件包含漏洞,虽然过滤了php,但使用大小写进行绕过
输入PHP://input,来写代码获取内容
cat fl4gisisish3r3.php