upload-labs通关-文件上传靶场-详细

提示:记录自己的通关靶场

实验工具:蚁剑、便携版火狐,burpsuite,phpstudy2018。

靶场地址:https://github.com/c0ny1/upload-labs

一共21关,每关都有详细实验记录


1.绕过js-前端

写好php木马,直接上传

upload-labs通关-文件上传靶场-详细_第1张图片

提示不允许上传php格式,先抓个包试试

upload-labs通关-文件上传靶场-详细_第2张图片

没有历史记录,可能就只是js前段的限制

先把123.php重命名为123.png进行上传

upload-labs通关-文件上传靶场-详细_第3张图片

发现123.php上传成功

upload-labs通关-文件上传靶场-详细_第4张图片

开始执行上传的文件

upload-labs通关-文件上传靶场-详细_第5张图片

可以利用一句话木马,使用一剑拿到webshell

upload-labs通关-文件上传靶场-详细_第6张图片

2.MIME-Type白名单

上传php

upload-labs通关-文件上传靶场-详细_第7张图片

主页提示文件错误,那可能就不是js页面限制了

抓个包试试看,改下格式

upload-labs通关-文件上传靶场-详细_第8张图片

upload-labs通关-文件上传靶场-详细_第9张图片

发现上传成功,执行试试

upload-labs通关-文件上传靶场-详细_第10张图片

 

第二种方法:更改白名单MIME

upload-labs通关-文件上传靶场-详细_第11张图片

抓包发现content-Type格式

upload-labs通关-文件上传靶场-详细_第12张图片

upload-labs通关-文件上传靶场-详细_第13张图片

upload-labs通关-文件上传靶场-详细_第14张图片

上传成功。

3.改同意思后缀-黑名单

上传php文件,被过滤掉了。

upload-labs通关-文件上传靶场-详细_第15张图片

发现是黑名单机制,这几个格式不能上传

upload-labs通关-文件上传靶场-详细_第16张图片

思路:php格式还可以用.phtml .phps .php5 .pht代替

upload-labs通关-文件上传靶场-详细_第17张图片

4.利用.htaccess文件-黑名单

不让上传php文件,而且限制了所有php可能的后缀格式

upload-labs通关-文件上传靶场-详细_第18张图片

还有一些首尾去空等等的限制,就不能用一些常的绕过了

思路:利用 .htaccess文件,此文件可以自动解析其他文件运行的格式

编写.htaccess文件,并上传成功。只要文件名还有pass4的文件都会以php格式运行

upload-labs通关-文件上传靶场-详细_第19张图片

upload-labs通关-文件上传靶场-详细_第20张图片

将木马文件名修改,并上传成功

upload-labs通关-文件上传靶场-详细_第21张图片

upload-labs通关-文件上传靶场-详细_第22张图片

去执行该文件即可

5.非循环验证-黑名单

upload-labs通关-文件上传靶场-详细_第23张图片

查看源码,发现只验证一次,不是循环验证

所以,可以利用 点--空格--点绕过

upload-labs通关-文件上传靶场-详细_第24张图片

上传成功

upload-labs通关-文件上传靶场-详细_第25张图片

upload-labs通关-文件上传靶场-详细_第26张图片

6.没有大小写限制-黑名单

upload-labs通关-文件上传靶场-详细_第27张图片

利用大小写绕过

upload-labs通关-文件上传靶场-详细_第28张图片

php文件执行成功。

upload-labs通关-文件上传靶场-详细_第29张图片

7.没有首尾空格限制-黑名单

没有首尾空格限制:

upload-labs通关-文件上传靶场-详细_第30张图片

可以使用空格绕过

upload-labs通关-文件上传靶场-详细_第31张图片

执行成功

upload-labs通关-文件上传靶场-详细_第32张图片

8.没有点的限制-黑名单

没点限制

upload-labs通关-文件上传靶场-详细_第33张图片

尾部加点绕过,点在文件名末尾会自动消除

执行成功

upload-labs通关-文件上传靶场-详细_第34张图片

9.尾添::DATA-黑名单

发现没有限制::DATA

upload-labs通关-文件上传靶场-详细_第35张图片

上传成功

执行成功:

upload-labs通关-文件上传靶场-详细_第36张图片

10.单次验证-黑名单

看的出来所有的格式都限制了,但只是一次验证

upload-labs通关-文件上传靶场-详细_第37张图片

思路:利用 点--空格--点,最后还剩下 php. 可以跳过文件的限制

upload-labs通关-文件上传靶场-详细_第38张图片

文件执行成功

upload-labs通关-文件上传靶场-详细_第39张图片

11.双写拼接-黑名单

进行代码审计

upload-labs通关-文件上传靶场-详细_第40张图片

思路:只是单次替换出现的违规后缀,可以拼接后缀名进行绕过,最后格式仍是 .php

不能单此识别两个php,否则会同时替换掉

upload-labs通关-文件上传靶场-详细_第41张图片

这个可以让替换掉,仍是php格式

upload-labs通关-文件上传靶场-详细_第42张图片

执行成功

12.get型传参截断-白名单

upload-labs通关-文件上传靶场-详细_第43张图片

strrops检测字符串在另一字符串中最后一次出现的位置

白名单接受,先检测是否符合、再截取后缀名重命名

upload-labs通关-文件上传靶场-详细_第44张图片

因为参数在url中是get型传参,参数可控,使用%00截断,让后面的全部丢弃,也就是不要tset.php文件

upload-labs通关-文件上传靶场-详细_第45张图片

上传成功,可以执行。

13.post型传参截断-白名单

upload-labs通关-文件上传靶场-详细_第46张图片

代码审计:发现跟12关一样的,抓个包试试看

upload-labs通关-文件上传靶场-详细_第47张图片

这里是post型传参,post不能自动解码,所以要先进行url转化

upload-labs通关-文件上传靶场-详细_第48张图片

最终上传的内容,且返回上传后的文件名

upload-labs通关-文件上传靶场-详细_第49张图片

上传的文件执行成功

upload-labs通关-文件上传靶场-详细_第50张图片

方法二、利用16进制找到php位置,修改为00

upload-labs通关-文件上传靶场-详细_第51张图片

upload-labs通关-文件上传靶场-详细_第52张图片

14.图片马-文件包含-白名单

upload-labs通关-文件上传靶场-详细_第53张图片

通过读取字节来验证是否为图片,这里就不能进行php格式的上传

提示有文件包含漏洞,可以去执行图片马

upload-labs通关-文件上传靶场-详细_第54张图片

去做个图片马,进行上传

/b 是ASCII形式打开,/a是以二进制打开

上传抓包

upload-labs通关-文件上传靶场-详细_第55张图片

访问图片文件,图片马执行成功,注意要使用file协议去执行文件

upload-labs通关-文件上传靶场-详细_第56张图片

15.图片马-文件包含-白名单

upload-labs通关-文件上传靶场-详细_第57张图片

会对文件一个16进制的读取,获取图片的大小,像素等信息判断是否符合图片要求

bypass:利用图片马和文件包含漏洞进行绕过

upload-labs通关-文件上传靶场-详细_第58张图片

再利用文件包漏洞执行图片

16.图片马-文件包含

这一关需要开启php_exif模块这一关需要开启php_exif模块

upload-labs通关-文件上传靶场-详细_第59张图片

上传图片马即可,跟前两关一样,也需要利用文件包含执行

 

17.二次渲染-白名单

二次渲染,

先上传一个图片马,二次渲染过后再进行下载保存。16进制打开图片

对比上传前的图片,发现没有被修改的地方,进行插入木马语句

重新上传即可

18.条件竞争-白名单

 这里是条件竞争,先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名否则删除,利用在删除之前访问文件这样文件会被占用就不会被删除,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可。

1、先正常上传图片,找到上传文件的路径

upload-labs通关-文件上传靶场-详细_第60张图片

2、直接上传php文件,抓包,无限快速的上传文件

upload-labs通关-文件上传靶场-详细_第61张图片

upload-labs通关-文件上传靶场-详细_第62张图片

在攻击时,一直刷新页面,php文件执行成功说明上传成功了

upload-labs通关-文件上传靶场-详细_第63张图片

这php文件可以写入一句话,再用蚁剑链接了

这不就链接成功了吗

upload-labs通关-文件上传靶场-详细_第64张图片

19.图片马-文件包含 -白名单

我这里是先上传一个图片马,可以上传

抓包,查看上传的文件是不是被重命名了

upload-labs通关-文件上传靶场-详细_第65张图片

接下来去执行这个图片马,路径一定要对,我这个上传php文件是跟包含文件在同目录下的

upload-labs通关-文件上传靶场-详细_第66张图片

20.文件夹命名/. -白名单

一般使用%00截断绕过,发现上传的文件格式不是php

upload-labs通关-文件上传靶场-详细_第67张图片

upload-labs通关-文件上传靶场-详细_第68张图片

绕过方法:img= upload/1.php/. 这里相当于访问这个路径下的.由于不存在,就以文件夹名方式保存的Php文件,发现上传成功。

upload-labs通关-文件上传靶场-详细_第69张图片

upload-labs通关-文件上传靶场-详细_第70张图片

成功执行php脚本

upload-labs通关-文件上传靶场-详细_第71张图片

21.数组接受/目录命名-白名单

代码分析:

upload-labs通关-文件上传靶场-详细_第72张图片

/upload/upload-20.jpg     正常上传

/upload/upload-20.php/ .jpg           绕过上传格式

save_name[0]='sss.php / '        检测的数组第一位

save_name[2]='jpg'        检测数组的最后一位

file={ 'sss.php/ ', ' ', 'jpg' }        组成的格式

sss.php/ .jpg        最后识别的格式,会识别sss.php文件

先借助post提交20.php/. 发现失败,因为.php/.不能被匹配,结尾必须是白名单要求的格式

upload-labs通关-文件上传靶场-详细_第73张图片

尝试提交20.php/.jpg 这样后缀就符合了要求,上传不需要添加 /

upload-labs通关-文件上传靶场-详细_第74张图片

upload-labs通关-文件上传靶场-详细_第75张图片

执行成功

upload-labs通关-文件上传靶场-详细_第76张图片


完结

你可能感兴趣的:(靶场练习,网络安全,php)