upload-labs1-21关文件上传通关手册

这篇具有很好参考价值的文章主要介绍了upload-labs1-21关文件上传通关手册。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

upload-labs文件上传漏洞靶场

第一关pass-01:

看源码可知道

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

仅让上传此三类的文件类型,其他都不可以上传。

上传会有js弹窗,前端检查(前端校验):

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

我们可以有三种绕过方法:

第一种:关闭网页的js提示弹窗

第二种:检查源代码,进行修改

第三种:利用burp进行抓包,修改上传的文件后缀.php

第一种:

在火狐浏览器中,搜索about:config,将js关闭即可

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

再次上传,即可成功。

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

方法二:检查页面的代码,进行修改,删除相应的方法以及返回值

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

删掉返回函数,再次尝试。

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

删除完成后,再次上传

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

上传成功

验证:

可以正常解析

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第三种:burp抓包,改文件的后缀即可成功。

burp进行抓包,修改文件的后缀,放包:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

上传成功

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第二关Pass-02

查看源码,可知道服务器端检查MIME类型(HTTP Header中的Content-Type)

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

验证是否可以解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第三关pass-03:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

查看代码可以知道,后端服务器做了很多的限制,不允许上传不允许上传.asp,.aspx,.php,.jsp后缀文件!删除文件末尾的点,转换为小写,收尾去空等限制

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

我们可以上传文件的别名,使用别名来绕过黑名单

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

放包后,上传成功!

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

访问并观察是否能够解析php:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第四关pass-04:

代码:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

绕过方法:

方法一:

根据源代码,改后缀,改为xxxx.php. .

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

验证是否可以解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

方法二:

上传.htaccess文件,文件内容:

<FilesMatch "lc">
Sethandler application/x-httpd-php
</FilesMatch>

再上传文件名当中包含lc的木马文件文件(木马文件码或者一句话木马)

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

上传成功后,访问,看是否能被解析:

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第五关pass-05:

观察源代码:

$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);//删除文件名末尾的点
        $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.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

由源代码可知,过滤方式和第四关差不多,这一个又过滤了.htaccess,所以我们无法上传.htaccess文件了

绕过方式同第四关方法一相同,使用xxxx.php. .后缀的文件进行上传绕过

第六关pass-06:

观察源代码:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

发现,此关卡没有过滤大小写,所以可以大小写绕过

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

成功上传

第七关Pass-07

观察源代码

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

发现没有过滤空格,所以可以文件后缀+空格进行绕过

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

访问该地址,看是否能被解析:

成功解析

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第八关Pass-08

观察源码

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

没有过滤后缀名末尾的点,所以可以在后缀+.进行绕过

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

访问木马文件的地址,观察能否成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第九关Pass-09

观察源码

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

发现没有过虑去除字符串::$DATA

所以可以文件后缀加上::$DATA进行绕过

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

成功上传后,访问该木马文件地址:

注意,访问时去掉::$DATA

成功解析

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十关Pass-10

源代码:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

本关卡可以使用. .进行绕过,同第四关方法一相同,抓包修改后缀即可。

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十一关Pass-11

观察源码

$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","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");

        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);
        $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 = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

将黑名单当中的后缀名进行替换,只要遇到黑名单当中的后缀就替换成空

所以,本关卡可以使用双写进行绕过xxx.pphphp

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

访问该木马文件地址,看是否能够解析:

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十二关Pass-12

源代码

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}
0x00截断绕过:
文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语言函数中,处理字符串 的函数中0x00被认为是终止符。

网站上传函数处理 XXX.php%00.jpg 时,首先后缀名是合法的jpg格式,可以上传,在保存文件时,遇到%00字符丢弃后面的jpg,文件后缀最终保存的后缀名为xxx.php.

本关卡观察源码发现,为GET请求:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

直接上传php文件,提示报错

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

上传png图片码或者在图片当中插入一句话木马

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

进行%00截断

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

复制木马文件地址链接,验证是否能够解析:

注意:删掉%00后面的部分,然后再访问执行

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十三关Pass-13

观察源码:

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传失败";
        }
    } else {
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

本关卡和上一关基本一致,区别为本关卡为POST请求

同理还是使用%00截断,注意的是,POST请求在使用%00截断时,%00需要进行url编码处理

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

编码后:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

放包后,成功上传,复制图片木马地址,进行访问,看是否能够解析

注意:在访问时该木马文件地址时,还是删掉%00后面的内容

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

另外一种方法:

还可以在上传的时候,在后缀处添加空格,将空格的对应16进制编码改为00,放包即可

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

找到对应的16进制位,将16进制数值20改为00,放包即可

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

访问木马,看是否被解析:

注意:将木马地址当中的%00后面的内容删除掉,留php后缀的木马文件即可

成功解析执行

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十四关Pass-14

源代码

function getReailFileType($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){      
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 'unknown';
        }    
        return $fileType;
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_type = getReailFileType($temp_file);

    if($file_type == 'unknown'){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

通过源码分析可得,源码读取前2个字节判断上传文件的类型,判断通过后,便重新给文件赋予新的后缀名。

本关可以使用图片码,搭配文件包含来进行绕过,因为存在include ,所以会以本文的形式读取webshell.jpg的内容,这样存在于webshell.jpg里的一句话木马就可以执行

图片码制作:
copy 1.png /b + shell.php /a webshell.jpg

或者使用编辑器工具,直接在图片当中插入一句话木马即可

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

通过文件包含,去包含这个图片马,包含后,里面的数据信息会当中php代码进行执行。

文件包含后,成功执行,并解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十五关Pass-15

源码:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

通过源码分析:

image_type_to_extension 根据指定的图像类型返回对应的后缀名

做法和14关一样,相同的方法进行绕过。

第十六关Pass-16

本关卡需要开启php_exif模块,在phpstudy扩展当中找到该模块,开启即可

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

源码:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

由源码可得:

exif_imagetype() 判断一个图像的类型,读取一个图像的第一个字节并检查其签名。
本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 [$_SERVER’HTTP_ACCEPT’] 结合使用来检查浏览器是否可以显示某个指定的图像。

绕过方式和做法同14关一样。

第十七关Pass-17

源码:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])){
    // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
    $filename = $_FILES['upload_file']['name'];
    $filetype = $_FILES['upload_file']['type'];
    $tmpname = $_FILES['upload_file']['tmp_name'];

    $target_path=UPLOAD_PATH.'/'.basename($filename);

    // 获得上传文件的扩展名
    $fileext= substr(strrchr($filename,"."),1);

    //判断文件后缀与类型,合法才进行上传操作
    if(($fileext == "jpg") && ($filetype=="image/jpeg")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromjpeg($target_path);

            if($im == false){
                $msg = "该文件不是jpg格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".jpg";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagejpeg($im,$img_path);
                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "png") && ($filetype=="image/png")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefrompng($target_path);

            if($im == false){
                $msg = "该文件不是png格式的图片!";
                @unlink($target_path);
            }else{
                 //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".png";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagepng($im,$img_path);

                @unlink($target_path);
                $is_upload = true;               
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "gif") && ($filetype=="image/gif")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromgif($target_path);
            if($im == false){
                $msg = "该文件不是gif格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".gif";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagegif($im,$img_path);

                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }
    }else{
        $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";
    }
}

分析源码可得:

本关卡为二次渲染:
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。

绕过:
配合文件包含漏洞:
将一句话木马插入到网站二次处理后的图片中,也就是把一句话插入图片在二次渲染后会保留的那部分数据里,确保不会在二次处理时删除掉。这样二次渲染后的图片中就存在了一句话,在配合文件包含漏洞获取webshell。

简单说就是,先正常的上传一个图片马,去正常的访问,发现一句话木马没有了,然后将上传的图片马下载下来,和原始的图片码进行对比,看哪里变了,哪里没变,在没变的地方,插入一句话木马,再次上传,结合文件包含去访问即可。

正常的去上去带有一句话木马的图片马:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

点击上传:可成功上传,然后去访问

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

复制该图片马的地址,去访问:

访问发现,我们的一句话木马被删掉了:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

这时,我们将上传的木马下载下来,进行和源图片马就行对比:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

对比发现变化的地方很多,只有头部没有变化,所以我们在头部插入我们的一句话木马:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

再次上传我们下载下来的图片:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

再次去访问:

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十八关Pass-18

源码:

$is_upload = false;
$msg = null;

if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_name = $_FILES['upload_file']['name'];
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_ext = substr($file_name,strrpos($file_name,".")+1);
    $upload_file = UPLOAD_PATH . '/' . $file_name;

    if(move_uploaded_file($temp_file, $upload_file)){
        if(in_array($file_ext,$ext_arr)){
             $img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
             rename($upload_file, $img_path);
             $is_upload = true;
        }else{
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
            unlink($upload_file);
        }
    }else{
        $msg = '上传出错!';
    }
}

通过源码分析,本关卡可以使用条件竞争进行绕过:

也可以使用文件包含,进行包含图片马

条件竞争:
在服务器删除我们上传的非法文件之前,访问这个文件,从而生成另一个木马文件,用这个木马文件getshell

竞争条件原理:
网站允许上传任意文件,然后检测文件中若有webshell,就删除文件;若不是指定类型文件,那么就使用unlink删除文件
在删除之前访问上传的php文件,从而执行上传文件中的php代码
在我们上传这个木马文件,上传到服务器之前在重命名删除之前去抢占这个文件,从而执行当中的php恶意代码
为了呈现比较明显的效果,我们在木马文件当中写入这句话:
php一句话创建以及写入文件内容:
<?php fwrite(fopen("cmd.php","w"),'<?php @eval($_POST["SHELL"]);?>');?>

上传时进行抓包,发给intruder模块

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

清空标记的变量,将payload设置为空值爆破

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

可将线程调高一些

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

接下来,访问shell.php的地址,再进行抓包,发给intruder模块

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

其余配置信息和以上一致,接下来进行攻击即可。

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

状态码为200,说明抢占shell.php成功,木马中的php代码成功执行,接下来停止攻击,访问木马当中生成的cmd.php木马文件即可。

验证是否能够成功解析:

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

另外一种方法是,上传图片马,使用文件包含去包含这个图片马:

正常的去上传:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

尝试文件包含:

一样还是可以成功被解析出来

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

第十九关Pass-19

本关卡上传路径和其他关卡不同,本关上传路径上传后会发现上传到网站的www目录下,可进行修改

myupload.php修改一下路径

function setDir( $dir ){

    if( !is_writable( $dir ) ){
        return "DIRECTORY_FAILURE";
    } else { 
        $this->cls_upload_dir = $dir."/";		// 这里改一下,加个斜杠
        return 1;
        ......

其他的操作和绕过方式同18关一致,也可使用文件包含进行绕过。

上传图片马,由于存在include.php,所以可通过include.php进行文件包含,同18关一样。

第二十关Pass-20

源码:

$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","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = $_POST['save_name'];
        $file_ext = pathinfo($file_name,PATHINFO_EXTENSION);

        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 . '文件夹不存在,请手工创建!';
    }
}

源码分析可得,save_name 可控,可以通过 .,空格,00截断绕过对后缀的判断,进行绕过

方法一:%00截断进行绕过

上传webshell:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

成功上传:

注意:访问时,将%00后面的内容进行删除,只留下php后缀的木马即可,成功解析文件

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

方法二:在后缀后加上/.让服务器认为是目录,匹配时会匹配成php/.,绕过检测

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

修改后,放包即可:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

成功上传,复制地址链接,访问,验证是否能够解析成功:

成功解析

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

方法三:相同的位置,在POST请求体当中,上传的文件,在重命名的文件处修改后缀名,php+空格也可以进行绕过(和上述操作一致,区别就是后缀后+空格)同理+.也可以

第二十一关Pass-21

源码:

$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 = "请选择要上传的文件!";
}

通过源码分析可得:

源码逻辑:

  1. 检查MIME (通过抓包改Content-Type 绕过)
  2. 判断 POST参数 save_name 是否为空,
  3. 判断$file 是否为数组,不是数组以 .分割化为数组
  4. 取 $file 最后一个元素,作为文件后缀进行检查
  5. f i l e 第一位和第 ‘ file 第一位和第` file第一位和第file[count($file) - 1]`作为文件名和后缀名保存文件

思路:

上传 webshell.php, 修改save_name 为数组绕过对 f i l e 的切割,最后 file 的切割,最后 file的切割,最后file 最后一个元素是 save_name[2] = png 绕过后缀检测 , 然后reset($file) = webshell.php 。相当于抓包,将save_name修改为数组,save_name[0]的值为webshell.php/,save_name[2]的值为png,放包即可。上传图片马或者带有一句话木马的图片格式文件。

$file[1]` 没有定义为空,`count($file)` 的值为`$file[count($file) - 1]` = `$file[1]

所以最后上传的文件为webshell.php

操作:

使用数组进行绕过

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

成功上传:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

复制图片地址链接,进行访问,看是否能够被成功解析:

成功解析:

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

注意:

上传时,POST请求体当中的,构造的save_name数组当中的上传文件名的信息后缀不用加/.,加/即可,否则上传失败

upload-labs1-21关文件上传通关手册,Web安全,web安全,网络安全

文章不妥之处,欢迎批评指正!文章来源地址https://www.toymoban.com/news/detail-697023.html

到了这里,关于upload-labs1-21关文件上传通关手册的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • upload-labs文件上传靶场实操

    上传姿势总结: 1)改后缀名绕过 2)Content-Type绕过 3)本地文件包含 4)远程文件包含 5)httpd.conf黑名单绕过 6)htaccess绕过 7)大小写绕过 8)空格绕过 9)点绕过 10)特殊符号::$DATA绕过 11). .绕过 12)多写绕过(多写php) 13)%00截断目录绕过 14)16进制00截断目录 15)本地文件包含+文件头绕过 16)本地

    2024年02月08日
    浏览(47)
  • 文件上传漏洞(一) upload-labs靶场练习

    文件上传漏洞的目标就是向服务器上传一些服务器可以解析的恶意文件,这类文件可以达到与攻击者建立连接并执行恶意命令的作用(又名webshell)。其危害之大,早已引起业界的关注。 本文将通过对upload-labs的练习,重现一些绕过手法,当然也是对文件上传漏洞基础部分的一个

    2024年02月03日
    浏览(46)
  • upload-labs通关攻略(更新中)

    upload-labs是一个使用php语言编写,专注于文件上传漏洞的靶场。该靶场可以让练习者了解文件上传漏洞的原理、利用方法。 1.首先要下载phpstudy,解压安装 phpstudy下载链接:https://www.xp.cn/download.html 2.下载upload-labs源代码 下载链接:https://codeload.github.com/c0ny1/upload-labs/zip/refs/hea

    2024年02月15日
    浏览(43)
  • Upload-labs 1~15 通关详细教程

    upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。 靶场地址Upload-labs。 上传一个php的一句话木马文件 文件内容如下: 上传php一句木马文件,这

    2024年02月09日
    浏览(65)
  • 文件上传漏洞--Upload-labs--Pass07--点绕过

    在Windows系统中,Windows特性会将文件后缀名后多余的点自动删除,在网页源码中,通常使用 deldot()函数 对点进行去除,若发现网页源代码中没有 deldot() 函数,则可能存在 点绕过漏洞。通过点绕过漏洞,可以达到上传含有恶意代码的文件的目的。 1、首先进行代码审计,发现网

    2024年02月21日
    浏览(43)
  • 文件上传漏洞--Upload-labs--Pass13&&14&&15--图片马

    顾名思义,图片马即 图片 + 木马。将恶意代码插入图片中进行上传,绕过白名单。 图片马制作流程: 1、在文件夹中打开 cmd,输入指令。 /b:二进制、 /a:追加。即将 test.php 追加到 test.jpg 中生成新图片 new.jpg。 1、首先进行代码审计,源代码中使用白名单,判断文件类型,

    2024年02月22日
    浏览(50)
  • 文件上传漏洞--Upload-labs--Pass05--大小写绕过

    我们想要上传含有恶意代码的 .php 文件,但 .php 后缀名的文件可能会被 白名单 或 黑名单拦截,从而上传失败,在某些源代码中,没有对文件的后缀用 strtolower()函数 统一进行小写化,这就会存在大小写漏洞,我们可以将 test.php 写作 test.Php,这样就可以绕过源码中的黑名单,

    2024年02月20日
    浏览(55)
  • upload-labs详解1-19关通关全解(最全最详细一看就会)

    upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共19关,每一关都包含着不同上传方式。 1.png: 选择一个php文件,发现无法上传。 查看提示说是使用js对不合法文件进行检查,看到是

    2024年02月06日
    浏览(87)
  • 文件上传upload-labs第三关,Apache无法解析php3、php5等问题

    修改文件后缀名为php5,上传后。无法解析php5 参考网上众多教程,修改httpd.conf配置文件: 添加.php3 .php5 phtml,大部分都可以解决 PHPStudy中AddType application/x-httpd-php等Apache命令之所以在Apache的设置文件中设置后未实现目标效果是由于PHP的版本不符导致的 修改版本,切换到如图所

    2024年02月12日
    浏览(54)
  • web安全-文件上传漏洞-图片马制作-相关php函数讲解-upload靶场通关详细教学(3)

    制作图片马有两种方法,一种是文本方式打开,末尾粘贴一句话木马,令一种是使用命令进行合成。 方法1 首先准备好一个图片(这里是1.png)。 将一个图片以文本格式打开(这里用的Notepad++,以记事本方式打开修改也能连接成功,不过修改后图片无法正常显示了)。 后面粘

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包