我正在尝试在上传表单上重现Null Byte Injection攻击.我有这个代码:
<?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>';
?>
Run Code Online (Sandbox Code Playgroud)
我正在尝试上传一个名为this:file.php%00jpg的文件,因此它将绕过substr()并将作为file.php上传,因为move_uploaded_file()应该停止在空字节(%00).
问题是上传的文件在服务器上没有命名为file.php而是file.php%00jpg(可以通过在url栏中输入/file.php%2500jpg来访问).
似乎move_uploaded_file()不关心空字节,那么这是如何工作的呢?是否可以使用我的代码上传扩展名为.php的文件?
谢谢 :).