<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
0.分析代码
我们先来分析一下代码吧。
<?php
show_source(__FILE__);
echo $_GET['hello']; //hello变量接受get传参,可以利用hello显示某些内容
$page=$_GET['page'];//page变量接受get传参
while (strstr($page, "php://")) { //检查page变量中是否含有字符串“php://“
$page=str_replace("php://", "", $page); //将page变量中的“php://”用空字符串代替
}
include($page);//文件包含,可以执行page变量中的代码。
?>
1.由include($page)看出本题的考点在于文件包含。
2.php://被过滤了。
1.文件包含漏洞是怎么一回事?
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
示例代码
<?php
$filename = $_GET['filename'];