Efu*_*veo 7 php forms security exploit
我正在尝试在上传表单上重现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的文件?
谢谢 :).
HTML表单将文件名urlen编码为%2500,PHP再次将其解码为%00(百分号,零,零).您的测试中没有空字节,您必须使用实际的空字节命名文件(不可能),或者手动调整HTTP请求而不是使用HTML表单.尽管如此,当前的PHP版本不容易受到这种攻击,PHP在内部将变量置于所谓的ZVal容器中,并允许在字符串中间使用空字节而不会产生任何影响.
| 归档时间: |
|
| 查看次数: |
8484 次 |
| 最近记录: |