是否可以对 PHP 代码执行空字节注入?而且,易受攻击的代码会是什么样子?你能给我一些例子吗,因为我注意到:
<?php
echo $_GET['get'];
不会使代码易受攻击。我想知道,如果可能的话,代码中有哪些可能的安全漏洞会导致这种漏洞。任何示例都会受到赞赏和有用。
是否可以对 PHP 代码执行空字节注入?而且,易受攻击的代码会是什么样子?你能给我一些例子吗,因为我注意到:
<?php
echo $_GET['get'];
不会使代码易受攻击。我想知道,如果可能的话,代码中有哪些可能的安全漏洞会导致这种漏洞。任何示例都会受到赞赏和有用。
PHP 中的空字节注入涉及在文件系统操作中如何处理空字节。如果攻击者可以将空字节注入文件路径,则底层 C 函数将忽略恶意字符之后的任何内容。这可以用来绕过诸如预期文件扩展名之类的约束。
以下示例来自 php.net:
<?php
$file = $_GET['file']; // "../../etc/passwd\0"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
// file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
include '/home/wwwrun/'.$file.'.php';
// the file /etc/passwd will be included
}
?>
http://www.php.net/manual/en/security.filesystem.nullbytes.php
在这种情况下,如果用户在文件参数的末尾提交空字符,则在文件操作期间将忽略“.php”扩展名。结合目录遍历字符串,它允许攻击者“包含”将被披露的任意文件。
此信息仅与旧的(不受支持的)PHP 版本相关。
空字节注入已在 PHP 5.3.4 中得到修复(它本身已经是一个旧的且不受支持的 PHP 版本):https ://bugs.php.net/bug.php?id=39863 。