为什么空字节不起作用?

时间:2013-04-11 22:23:03

标签: php null byte

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

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

有人可以提出解决方案来完成它吗? (../../etc/passwd也无效)

我正在使用 PHP 5.3.2 Apache 2.2.14 firefox

3 个答案:

答案 0 :(得分:2)

include不是布尔函数。

尝试

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

然后,您可以致电scriptName.php?page=test查看test.php是否存在。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

PHP = / = C. PHP在字符串中处理NULL字节没有问题。

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

See how it works