upload-labs文件上传靶场通关记录

小白版

  • pass-1 前端js禁用
  • pass-2 MIME信息验证
  • pass-3 黑名单
  • pass-4 .htaccess文件
  • pass-5 一次过滤
  • pass-6 大小写
  • pass-7 空格
  • pass-8 文件末尾的点
  • pass-9 ::$DATA
  • pass-10
  • pass-11 双写绕过
  • pass-12

pass-1 前端js禁用

关卡说了是前端禁用不合法图片咯,那肯定看看源码咯

upload-labs文件上传靶场通关记录_第1张图片
我这里有两种方法:1.抓包改文件后缀名
upload-labs文件上传靶场通关记录_第2张图片
在这里把jpg改成php再提交。
2.把源代码复制下来,自己另外创建个html文件,把js部分的限制代码删掉,然后去修改或增加action表单信息,来实现把文件上传,这里是没有action的,所以你得自己再from表单里加一个,在这之前你要知道文件上传的url,因此先提交一个图片,然后看数据包提交的位置。然后加到前面的html文件中,然后再提交文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后你可以打开本地文件验证下是否上传成功,如图两个php文件均上传成功。
upload-labs文件上传靶场通关记录_第3张图片

pass-2 MIME信息验证

看源代码可知。
upload-labs文件上传靶场通关记录_第4张图片
$_FILES[‘myFile’][‘type’] 表示的是文件的 MIME 类型。
MIME信息是指数据包“content-type”返回文件类型,而burp抓包可以修改文件后缀名,那么就容易啦。把要传的文件改成jpg后缀,然后用burp抓包再把后缀名改回来再发出去就好啦!
upload-labs文件上传靶场通关记录_第5张图片
upload-labs文件上传靶场通关记录_第6张图片
这里也是可以改content-type信息的,就是前面文件就用php文件,然后抓包后改content-type信息。
upload-labs文件上传靶场通关记录_第7张图片

pass-3 黑名单

看了提示和源代码就知道咯,这关就是黑名单。那么这关就是通关上传php5,phtml,php3等等文件来绕过这个过滤条件。那么为什么可以这么做,是因为Apache可以通过php来解析这些文件。

upload-labs文件上传靶场通关记录_第8张图片
但是此处要注意上传的文件名改变了,要抓包在数据包里看回显(实战可能没有)。
upload-labs文件上传靶场通关记录_第9张图片
然后我们在访问时会发现一打开这个文件就直接下载了。根本无法执行,这里是一个bug,不要去纠结是不是自己错了。具体说明再我给的这个链接,这个博主说的很详细大家可以去看下。关于访问文件直接下载的原因

pass-4 .htaccess文件

这一关一看提示和源码,好家伙禁止上传的文件可太多了,几乎所有脚本文件的格式都不允许上传。所以这里要用到的就是.htaccess文件,这是Apache服务器特有的配置文件,它可以改变相关目录下的网页配置,简单来说就是将一种文件以另一种文件的格式去解析。前提是你能访问到该文件。
.htaccess文件内容如下:
upload-labs文件上传靶场通关记录_第10张图片
先把这个文件上传,然后再传一个2.png文件(这里面写的是你要执行的php代码),然后访问这个文件,它就会php格式解析。
upload-labs文件上传靶场通关记录_第11张图片

pass-5 一次过滤

这关看源代码可以知道,没有循环验证,也就是说这些收尾去空,删除末尾的点,去除字符串::$DATA,转换为小写这些东西只是验证了一次。因此绕过的思路就是用burp抓包,然后修改上传文件的后缀名。(1.php. .)
upload-labs文件上传靶场通关记录_第12张图片
这里说一下,windows系统会自动强制删除文件末尾的点。所以这里php.到最后保存的是php文件。
upload-labs文件上传靶场通关记录_第13张图片

pass-6 大小写

从代码中可以发现这里少了一个过滤大小写的语句,而且提示中你也可以发现有些文件后缀是含有大写字母。所以这关的绕过思路就是大小写。
上传一个后缀名含大写字母的文件上去就行,只要不和限制的一样就行。
upload-labs文件上传靶场通关记录_第14张图片
upload-labs文件上传靶场通关记录_第15张图片

pass-7 空格

通过看源码可以知道这关没有过滤空格,所以绕过思路就是抓包后把上传文件后面加上一个空格。但是要注意这里文件上传后是重命名了的。upload-labs文件上传靶场通关记录_第16张图片
在这里插入图片描述
upload-labs文件上传靶场通关记录_第17张图片

pass-8 文件末尾的点

看源代码可知,这关没有过滤文件末尾的点,因此绕过思路就是抓包在文件末尾加上一个点即可。
upload-labs文件上传靶场通关记录_第18张图片
upload-labs文件上传靶场通关记录_第19张图片

pass-9 ::$DATA

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。
所以绕过思路与前面相同,就是抓包改后加上$::DATA就行。注意这里文件也重命名了。upload-labs文件上传靶场通关记录_第20张图片
upload-labs文件上传靶场通关记录_第21张图片

pass-10

和第五关是一样的。

pass-11 双写绕过

这关有一个函数 str_ireplace()它是替换字符串中的一些字符。所以如果我们将文件后缀写为.pphphp,这样过滤后剩下的上传就是php文件了。
upload-labs文件上传靶场通关记录_第22张图片
upload-labs文件上传靶场通关记录_第23张图片

pass-12

你可能感兴趣的:(前端,安全)