测试

介绍

这是一个文件上传的靶场(总共19关)

下载地址:
https://github.com/c0ny1/upload-labs

过程

第一关:

image.png-194.5kB

可以看到这里的上传的验证是javascript验证的,也就是前台认证,但是我们可以利用后台验证绕过。

步骤:
1、上传一个2.png
2、抓包将2.png修改为2.php

1.png-225.3kB

然后看看是否成功上传

1.png-16.1kB

upload目录是这个靶机上传的文件的存放目录,所以上传的东西都会在这里,所以看有没有成功上传的话可以直接来这里看,或者去访问一下http://xxx.xxx.xxx/upload/文件名,如我刚刚上传的2.php就是这个链接

http://127.0.0.1/upload/upload/2.php

1.png-51.8kB

第二关:

1.png-256kB

所谓文件类型就是上传文件的时候请求中的Content-Type,如下

1.png-206.5kB

这关的代码逻辑就是,如果上传的文件类型是image/jpegimage/pngimage/gif就可以上传。那么只要上传一个php文件,然后把文件类型修改为image/jpeg即可上传

1.png-132.5kB

1.png-30.6kB

成功上传~

第三关:

此关就是后台禁止phpjspaspaspx这四个文件上传

这关的代码比较长,我就直接贴出来了~

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

既然不能上传php,那么我们可以上传.php3(上传后也是当php解析)

1.png-135.2kB

然后看看是否上传了

1.png-25.3kB

可以看到是上传了的,但是为什么名字会那么长呢?
可以看看代码中第15

$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;

这个$img_path就是上传后的文件的地址,UPDATE_PATH就是上传目录(upload),data("YmdHis")就是当前时间的年月日时分秒,rand(1000,9999)就是在00009999中随机抽数字,$file_ext就是上传的文件的后缀,所以拼接起来就是这么长的名字。

那么我们上传了这个文件后,看不到他的名字,我们就可以爆破当前时间的年月日时分秒,然后后面几个随机数字爆破,这里不演示了,直接打开看看php3是否和php效果一样~


Reprint please specify: only_free blog 测试

Previous
美团某处上传存在SSRF漏洞 美团某处上传存在SSRF漏洞
1、打开Url:http://xxx.com/profile ,然后选择一个图片上传然后抓包发现有如下请求 然后我猜想这里的处理流程是这样的: 上传文件后返回包返回一个Url 然后上图那个请求把一部的Url去访问并且使其成为图片地址(应
2018-12-24
Current
测试 测试
介绍这是一个文件上传的靶场(总共19关) 下载地址:https://github.com/c0ny1/upload-labs 过程第一关: 可以看到这里的上传的验证是javascript验证的,也就是前台认证,但是我们可以利用后台验证绕过
2018-12-23 only_free
TOC