upload-labs搭建


upload-labs是一个练习文件上传的靶场

我们需要先安装中间件和PHP,推荐使用小皮面板,如何安装使用见
upload-labs下载:https://gitcode.net/mirrors/c0ny1/upload-labs/-/archive/master/upload-labs-master.zip
解压拷贝到WWW目录即可使用

Pass-1 javascript检测

1.创建一个info.php内容为phpinfo();


上传info.php

必须使用后缀名为.jpg|.png|.gif图片才可以上传,猜测是javascript禁用,我们使用浏览器自带的javascript禁用功能
F12打开控制台,右上角的三个小点,设置,往下拉就可以看到禁用javascript

禁用后直接上传文件,上传成功

这里由于我们不是真正的图片,所以显示不出来,上传成功后,文件上传到了upload根目录下:http://192.168.84.232/upload-labs-master/upload/info.php

2.可以使用burpusite抓包更改后缀名

我们先更改文件名为图片jpg/png后缀

上传图片使用burpusite抓包,将jpg/png后缀改为php,修改后 Forward 转发即上传成功


这里已经上传成功,因为我们上传的本来就不是图片,可以访问文件测试

3.将页面保存,删除javascript内容,将action提交地址改为目标地址

首先我们 Ctrl + s保存名为Pass3.html文件,这里我们保存到root目录


修改Pass3.html将javascript内容删除,命令vim Pass3.html

找到上传区,在form标签中加入action提交地址
修改前:

修改后:

那么提交地址如何获取到呢?我们真正上传一个图片,在上传的同时浏览器控制台,网络(Network),上传得到提交地址

修改后,使用浏览器打开Pass3.htm,命令firefox Pass3.html

会看到使用的是file协议打开,直接上传我们的info.php,即可上传成功

上传成功,访问测试http://192.168.84.232/upload-labs-master/upload/info.php

Pass-2

源代码如下:

$is_upload = false; 
$msg = null;        
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}