0

我根据我的知识创建了一个简单的网站,但我发现它存在本地文件包含 ( LFI ) 漏洞。我想在我的计算机上测试利用它,但是每当我尝试绕过无效的空字节时。我编写了这个简单的代码并尝试了它,但它仍然无法正常工作 => [test.php?page=index.php%00(在当前目录中显示 index.php)]

$page=$_GET['page'];
if(!include($page.".php"))
phpinfo();

任何人都可以提出解决方案来完成它吗?(../../etc/passwd也不工作)

我正在使用PHP 5.3.2Apache 2.2.14firefox

4

3 回答 3

2

include不是布尔函数。

尝试

if( file_exists($_GET['page'] . ".php") ) {
    include($_GET['page'] . ".php");
}

然后你会打电话scriptName.php?page=test来看看是否test.php存在。

于 2013-04-11T22:25:04.857 回答
0

PHP =/= C。PHP 可以毫无问题地处理字符串中的 NUL 字节。

还要注意不要在服务器级别过滤 %00。

看看它是如何工作的。

于 2013-04-11T22:49:13.800 回答
0

我总是使用白名单,所以允许页面。如果“索引”不在允许的页面内,我不包括在内。[假设:?page=index 和 $allowed = ARRAY('index', 'home', 'imprint', ...)]

于 2013-04-11T22:25:24.717 回答