当前位置:   article > 正文

全网最全upload_labs通过教程,有详细解题思路_uploadlabs教程详解

uploadlabs教程详解

p文件上传漏洞-upload-labs通关

第1关:前端js绕过

如何区分前端,还是后端

前端尝试抓包

禁止js 先上传非法文件看下可以抓到包不

绕过方法 先上传合法文件 在通过该后缀 本关两种方法第一种禁用js,第二种该后缀

image-20240403134920966

image-20240403135108922

然后用蚁剑进行连接

image-20240403143839760

image-20240403144043326

第2关 content-type绕过

image-20240403145032748

改成content-type:image/jpeg

如何判断是content-type绕过 先上传正常的jpg看下是否可以显示,抓包分析

第3关:黑名单特殊后缀绕过 php3,php5

image-20240403145512628

黑名单,这些文件类型不让上传

源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp');
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if(!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

改成php5上传

但是蚁剑无法连接,原因服务器没允许,要想可以解析修改配置文件 /opt/lampp/etc/httpd.conf 去带#就可以解析了

image-20240403151441345

image-20240403151754817

第4关 .htaccess绕过

image-20240403151922046

还是黑名单限制了更多,唯独没进.htaccess

.htaccess 是配置文件 通常位于网站的根目录或特定的文件中,并影响该目录及子目录。每个目录都可以有这个文件

httpd.conf 是全局的文件,整个服务器的 管理员才可以修改,并且要重启

.htaccess文件可以通过文本编辑器直接进行修改或创建,且修改后会立马生效,不用重启

上传该文件

将 .jpg .txt 文件仍然以php解析

先上传 .htaccess文件 在上传图片马

AddType application/x-httpd-php .jpg .txt
  • 1

image-20240403154445274

第5关

配置文件详解

.htaccess

作用:分布式配置文件,一般用于URl 重写,认证 访问控制等

作用范围:特定目录(一般是网站根目录)及其子目录

优先级:较高,可覆盖apache的主要配置文件(httpd-conf)

生效方式:修改后立刻生效

httpd-conf

作用:包含 Apache HTTP 服务器全局行为和默认设置

作用范围:整个服务器

优先级:较低

生效方式:管理员权限,重启服务器后生效

.user.ini

作用:特定于用户或特定目录的配置文件,通常位于web应用程序根目录下。

它作用于覆盖或追加全局配置文件(如 php.ini)中的php配置选项

作用范围:存放该文件的目录以及其子目录

优先级:较高,可以覆盖php.ini

生效方式:立刻生效

php.ini

作用:存储了对整个php环境生效的配置文件,它通常位于php安装目录中,

作用范围:所有运行在该php环境中的php请求

优先级:较低

生效方式:重启php或web服务器

加载方式:会首先加载php.ini/httpd-conf中的配置文件,然后,如果某个目录下存在 .user.ini/.htaccess文件,服务器会在处理请求时检查该目录,并覆盖相应的配置项

.user.ini生效前提

最好大于5.30最好是7.x版本的

ServerAPI为 CGI/FastCGI ----phpinfo()可以查看 serverAPI

serverAPI 类似信息交互的一种协议

.user.ini文件上传漏洞的前提:
.user.ini可以生效并且该上传目录有php文件

.user.ini绕过

写法:
Auto-prepend-file=111.txt (这个文件里面只包含php代码)
A: echo "hello" .php            b: echo "word" .txt
Autp-prepend-file=b.txt     内容 为 helloword

  • 1
  • 2
  • 3
  • 4
  • 5

image-20240403164849099

image-20240403172513929

点加空格点绕过

点加空格加点

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);     #获取文件名字
        $file_name = deldot($file_name);//删除文件名末尾的点   #1.jpg. 会变成 1.jpg
        $file_ext = strrchr($file_name, '.');               #通过.分割 获取文件后缀   1   .jpg   
        $file_ext = strtolower($file_ext); //转换为小写       #将后缀转为小写  
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA   
        $file_ext = trim($file_ext); //首尾去空
        #判断文件后缀在不在黑名单里
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

windows 文件后缀 . 空格 在文件最后都会被自动删除

源码只过滤一遍

1.php. .

根据代码来看,文件名字变化过程

1.php.空格

1.php.

不在后缀中,然后上传到服务器里,最后在文件中自动删除变成1.php

image-20240403184056948

第三关用这种方法不行

因为第三关名字是随机取的上传文件之后和 上传的文件后缀组合成新的文件名

第6关 大小写绕过

文件后缀 Txt TXT 都会在windows中变成txt最后

image-20240403185519702

第7关 空格绕过

image-20240403190440943

第8关 后缀加点绕过

image-20240403190843088

怎么分析的,与前面几关都类似,看源码没有去除. 所以可以用加.来绕过

image-20240403190903132

第9关:声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签