upload_libs通关教程

Pass-01-js检查

在这里插入图片描述

只能上传jpg|png|gif

js验证

在这里插入图片描述

上传php文件被拦截

在这里插入图片描述

删除js验证,上传成功

在这里插入图片描述

在这里插入图片描述

Pass-02-MIME-Type验证

在这里插入图片描述

文件有MIME-Type验证,可以用burpsuit抓包,修改Content-Type为image/jpeg

在这里插入图片描述

上传成功

在这里插入图片描述

在这里插入图片描述

Pass-03-黑名单验证

在这里插入图片描述

文件有黑名单需要绕过

用黑名单不允许上传.asp,.aspx,.php,.jsp后缀的文件

但可以上传.phtml .phps .php5 .pht

前提是apache的httpd.conf中有如下配置代码

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

在这里插入图片描述

修改文件后缀名phtml,上传文件成功

在这里插入图片描述

在这里插入图片描述

Pass-04-黑名单验证(.htaccess)

在这里插入图片描述

黑名单拒绝了几乎所有有问题的后缀名,除了.htaccess
前提条件(1.mod_rewrite模块开启。2.AllowOverride All

在这里插入图片描述

因此先上传一个.htaccess文件,内容如下:

SetHandler application/x-httpd-php 

这样所有文件都会当成php来解析

上传.htaccess

在这里插入图片描述

将php文件后缀名改为.gif,上传成功

在这里插入图片描述

Pass-05-黑名单验证(路径拼接绕过)

在这里插入图片描述

查看源码发现过滤了几乎所有后缀名,但没有对上传的文件进行重命名。

上传文件后缀名为.php. .

deldot删除最后一个点之后,不再进行删除,trim删除空格,那么最终上传的文件名为 1.php.。利用Windows自动去除最后一个点,导致成功上传1.php

使用bp修改后缀名上传成功

在这里插入图片描述

在这里插入图片描述

Pass-06-黑名单验证(大小写)

在这里插入图片描述

源码没有进行大小写后缀名过滤,可以将文件后缀名大小写绕过

在这里插入图片描述

Pass-07-黑名单验证(空格绕过)

在这里插入图片描述

源码没有去空格,可以在后缀名加空格绕过 php+

在这里插入图片描述

在这里插入图片描述

Pass-08-黑名单验证(点绕过)

在这里插入图片描述

源码没有去除点,可以通过点绕过

在这里插入图片描述

在这里插入图片描述

Pass-09-黑名单验证(特殊符号)

在这里插入图片描述

源码没有去除:: D A T A ,可以通过 : : DATA,可以通过:: DATA,可以通过::DATA绕过

Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。

在这里插入图片描述

文件路径删除::$DATA访问

在这里插入图片描述

Pass-10-黑名单验证(路径拼接绕过)

在这里插入图片描述

查看源码发现过滤了几乎所有后缀名,但没有对上传的文件进行重命名。

上传文件后缀名为.php. .

deldot删除最后一个点之后,不再进行删除,trim删除空格,那么最终上传的文件名为 1.php.。利用Windows自动去除最后一个点,导致成功上传1.php

使用bp修改后缀名上传成功

在这里插入图片描述

在这里插入图片描述

Pass-11-黑名单验证(双写绕过)

在这里插入图片描述

str_ireplace() 函数替换字符串中的一些字符(不区分大小写),只替换一次。

可以进行双写绕过1.pphphp

在这里插入图片描述

在这里插入图片描述

Pass-12-白名单验证(GET00截断)

在这里插入图片描述

0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束。

GET型提交的内容会被自动进行URL解码。

使用00截断绕过

截断条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态
在抓包头save_path.../upload/1.php%00

在这里插入图片描述

使用bp,将php文件后缀名改为1.png,并且GET路径后面添加2.php%00,上传

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Pass-13-白名单验证(POST00截断)

在这里插入图片描述

在POST请求中,%00不会被自动解码,需要在16进制中进行修改00

./upload/2.php空格-》转到hex找到2.php-》把2.php后面的2020改为0000

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Pass-14-图片马绕过

在这里插入图片描述

通过源码可知,服务器打开文件读取前两个字节,判断文件类型

针对这种情况可以直接新建文件改名1.jpg,其中代码内容如下 
GIF98A 
<?php
     phpinfo(); 
?>
或
Windows制作webshell 
copy 1.png/b+1.php/a shell.png

将图片上传

直接访问图片并不能把图片当做PHP解析,因此还需要利用文件包含漏洞

##include.php
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?>

在这里插入图片描述

Pass-15-getimagesize图片马绕过

在这里插入图片描述

用getimagesize函数判断文件类型,还是可以图片马绕过,方法同pass-14

Pass-16-exif_imagetype()图片马

在这里插入图片描述

这里用到php_exif模块来判断文件类型,用图片马绕过,方法同pass-14

Pass-17-二次渲染绕过

在这里插入图片描述

判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染

制作一张图片马进行上传

在这里插入图片描述

在这里插入图片描述

使用010Editor查看webshell图片

在这里插入图片描述

查看上传的图片,发现图片被二次渲染,我们插入的代码<?php phpinfo(); ?>已经消失了

在这里插入图片描述

显然,这样的图片马上传方式失败了。
不过二次渲染会保留一些文件内容不会改变,所以在制作图片马之前,我们先观察二次渲染前后图片不会改变的地方,将其代码写入其中即可绕过二次渲染

Pass-18-条件竞争

在这里插入图片描述

这里是条件竞争,先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此我们可以上传1.php只需要在它删除之前访问即可,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可

在这里插入图片描述

Pass-19-条件竞争

在这里插入图片描述

因此也存在条件竞争的问题,不过这题对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,因此可以通过不断上传图片马,由于条件竞争可能来不及重命名,从而上传成功。

Pass-20-00截断

在这里插入图片描述

//发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

上传图片马,使用文件包含打开

在这里插入图片描述

Pass-21-数组绕过

在这里插入图片描述

可以使用图片马的方法

首先,判断文件的Content-Type类型是否在白名单中,如果不在禁止上传,如果在的话,继续往下执行。

如果POST接收的save_name为空,则赋值为$_FILES[‘upload_file’][‘name’],不为空就为本身

explode() 函数把字符串打散为数组
end()函数将 array的内部指针移动到最后一个单元并返回其值
reset()函数将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值
count() 函数计算数组中的单元数目或对象中的属性个数,这里要注意,数组下标从0开始

继续执行,如果$file不是数组则打乱成数组,如果是就往下执行

利用end函数将 f i l e 数组的最后一个单位赋值给 file数组的最后一个单位赋值给 file数组的最后一个单位赋值给ext

之后判断$ext是否在白名单内。在的话继续往下执行

将file数组的第一个元素用点拼接最后一个元素,赋值给$file_name,之后上传

这一关可以数组+/绕过

在这里插入图片描述

上传失败QAQ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huang0c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值