我正在尝试在上传表单上重现空字节注入攻击。我有这个代码:
<?php
if(substr($_FILES['file']['name'], -3) != "php") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']))
echo '<b>File uploaded</b>';
else
echo '<b>Can not upload</b>';
}
else
echo '<b>This is not a valid file/b>';
?>
我正在尝试上传一个像这样命名的文件:file.php%00jpg,因此它将绕过 substr() 并将作为 file.php 上传,因为 move_uploaded_file() 应该在空字节 (%00) 处停止。
问题是上传的文件在服务器上不是名为file.php,而是file.php%00jpg(可以在url栏中输入/file.php%2500jpg访问)。
看来 move_uploaded_file() 并不关心空字节,那么它是如何工作的呢?是否可以使用我的代码上传扩展名为 .php 的文件?
谢谢 :)。