upload-labs靶场

upload-labs靶场

目录

Pass-01客户端JS检测

检测方法:

一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。

判断方式:在浏览器加载文件,点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/ .jpegl.png后缀名的文件,而此时并没有发送数据包。

打开F12可以查看点击上传没有请求

案例:

将含有一句话木马的php文件修改后缀为jpg上传,同时打开BP进行抓包,将1.jpg改为1.php后再放包,
在这里插入图片描述

成功绕过检测,上传文件

在这里插入图片描述
在这里插入图片描述

Pass-02绕过MIME检测

MIME (Multipurpose Internet Mail Extensions)是描述消息内容类型的因特网标准。用来表示文档、文件或字节流的性质和格式。在http数据包中在Content-Type字段显示。

  • 超文本标记语言.html文件: text/html
  • 普通文本.txt文件:text/plain
  • PDF文档.pdf: application/pdfPNG
  • 图像.png: image/png
  • GIF图像.gif: image/gif
  • MPEG文件.mpg、.mpeg: video/mpeg
  • 二进制流:application/octet-stream

案例:

上传aa.txt文件,BP进行抓包,将Content-Type改为image/png,再放包

在这里插入图片描述

成功绕过检测上传

在这里插入图片描述
在这里插入图片描述

Pass-03利用其他后缀绕过检测

在这里插入图片描述

上传其他后缀,例如.php3
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Pass-04利用apache配置文件绕过

.htaccess文件(或者"分布式配置文件"”) ,全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法。
在这里插入图片描述

比如新建一个.htaccess文件:

<FilesMatch “hack2.png”>

setHandler application/x-httpd-php

</FilesMatch>

通过一个.htaccess文件调用php的解析器去解析一个文件名中只要包含"hack2.png"这个字符串的任意文件,所以无论文件名是什么样子,只要包含hack2.png"这个字符串,都可以被以php的方式来解析,一个自定的.htaccess文件就可以以各种各样的方式去绕过很多上传验证机制。

先上传.htaccess文件,再上传hack2.png图片,再进行解析
在这里插入图片描述

Pass-05 大小写绕过

使用BP将1.php文件后缀改为.Php
在这里插入图片描述

成功绕过
在这里插入图片描述

在这里插入图片描述

Pass-06使用 windows特性

在windows环境下,test.jpg[空格] 或 test.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认 除去 空格 或 点

使用BP在1.php后添加空格,绕过
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pass-07使用 windows特性

使用BP在hack2.php后添加 点. 绕过

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用蚁剑连接

在这里插入图片描述

Pass-08文件流特性

文件流特性:在php+windows的情况下:如果文件名+“::&DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持”::$DATA"之前的文件名。
在这里插入图片描述
在这里插入图片描述

删除特殊字符::$DATA绕过,显示目标文件
在这里插入图片描述

Pass-09构造后缀绕过黑名单

这一关黑名单,最后上传路径直接使用文件名进行拼接,而且只对文件名进行f i l e n a m e = d e l d o t ( file_name = deldot(file_name=deldot(file_name)操作去除文件名末尾的点,构造后缀绕过黑名单

补充知识:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来

上传hack2.php,然后用BP改后缀加 点空格点

(即文件名为hack2.php. .)
在这里插入图片描述

在这里插入图片描述

Pass-10双写绕过

这一关黑名单,使用str_ireplace()函数寻找文件名中存在的黑名单字符串,将它替换成空(即将它删掉),可以使用双写绕过黑名单

补充知识:str_ireplace(find,replace,string,count) 函数替换字符串中的一些字符(不区分大小写)

在这里插入图片描述

使用BP双写php进行绕过
在这里插入图片描述

在这里插入图片描述

Pass-11 get%00截断绕过

在这里插入图片描述

%00是一个url编码,url发送到服务器后就被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容,即解码成了0x00。

在url中%00表示ascll码中的0,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。

系统在对文件名进行读取时,如果遇到Ox00,就会认为读取已经结束。但要注意是文件的十六进制内容里的00,而不是文件名中的00。

在这里插入图片描述

步骤:

上传hack2.png图片,使用BP抓包,在/upload/后添加hack2.php%00,绕过显示hack2.php文件
在这里插入图片描述

使用蚁剑成功连接
在这里插入图片描述

Pass-12 post%00截断绕过

步骤:

上传hack2.php文件,在/upload/后添加hack2.php%00,再将%00手动进行URL解码,发送

在这里插入图片描述

hack2.php后的空格为%00解码后的空格,已被截断,因此后面的54** *.png无法复制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Pass-13 图片马绕过

将含有一句话木马的图片马上传后,打开新页面

在这里插入图片描述

打开目录下的include.php页面,复制新生成的文件名
在这里插入图片描述

此时在图片乱码下,显示phpinfo
在这里插入图片描述

Pass-14 文件幻数检测

解法同第13关

function isImage($filename){
    $types = '.jpeg|.png|.gif';
    if(file_exists($filename)){
        $info = getimagesize($filename);
        $ext = image_type_to_extension($info[2]);
        if(stripos($types,$ext)){
            return $ext;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

//getimagesize返回的结果是(width, height, type, attr)//type是文件类型,结果是int型,attr指的是width, height的文本

//image_type_to_extension是通过返回的int型,寻找对应的字符串,
//比如:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD

//stripos是寻找字符串2在字符串1中第一次出现的位置,不区分大小写,
//如果没有出现,返回FALSE

十四关是用了getimagesize函数来对文件类型做判断

Pass-15 文件幻数检测

十五关是用的exif_imagetype函数

解法同第13关
在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值