CTFHub-文件上传
无验证
前端验证
.htaccess
MIME绕过
文件头检查
00截断
双写后缀
无验证
- 打开靶场获取信息,为无限制的文件上传,随便写入一个
.php
的一句话木马上传
- 上传成功并获取上传文件的相对路径
- 用post传参检测木马能否连接,测试连接成功。
- 使用蚁剑连接
- 在目录中获取flag
前端验证
-
打开靶场检查源码发现只允许我们上传
.png .jpg .gif
文件
-
考虑到为前端验证,且
.php
文件无法上传,我们可以上传一个带有一句话木马的.png
然后在bp中修改后缀为.php
-
上传成功并获得相对路径
-
用post传参检查木马能否连接,连接成功
-
连接蚁剑
-
在目录中查找flag
.hatsccess
-
根据提示了解一下
.htaccess
.htaccess
文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess
文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。那么根据.htaccess
文件的特性,我们可以先上传一个.htaccess文件将原文件替换掉,该内容如下,作用为将所有文件解析为.php
文件。
-
打开靶场,检查源代码,我们观察到
.php
文件时无法直接直接上传的
-
先上传
.htaccess
文件替换原文件后,再上传.png
文件,在.htaccess
文件的作用下,我们上传的.png
文件会被解析为.php
文件,上传成功后获得相对路径。
-
用post传参检查木马能否连接,连接成功
-
连接蚁剑
-
获取flag
MIME绕过
-
了解一下MIME是什么
MIME类型校验就是我们在上传文件到服务端的时候,服务端会对客户端也就是我们上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。
也就时说,我们需要修改我们的Content-Type为白名单的内容 -
直接上传
.php
文件时显示文件类型不正确
-
这时我们使用bp来修改上传文件Content-Type.
-
上传成功,获的相对路径,然后进行post传参检查木马能否连接,连接成功
-
连接蚁剑
-
获取flag
文件头检查
-
文件头检查
顾名思义,其实就是是指当浏览器上传到服务器的时候,白名单进行的文件头检测,符合,则允许上传,否则不允许上传。先上传一个.php
文件,给出提示,表名文件类型不正确,只允许上传.jpeg .png .gif
类型文件
-
因为允许图片类型的文件上传,选择做一个图片木马
-
上传成功,并获得相对路径
-
post传参检验木马能否连接,连接成功
-
连接蚁剑
-
获取flag
00截断
- 我们需要去了解一下php5.2 00截断的原理
PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。
简单来说,当我们输入cmd.php
时候,输出的就是cmd.php
但是当我们输入cmd.png%00.php
,输出的是cmd.png
- 打开靶场检查源码可知,可通过的文件后缀有
.png .jpg .gif
- 这时候通过bp使用 00截断 的方式上传
.php
文件
- 打开靶场检查源码可知,可通过的文件后缀有
- 上传成功,此时文件上传路径为
road=/var/www/html/upload/cmd.php%00
,相对路径也就是/upload/cmd.php
,然后通过post传参检查木马能否连接,连接成功
- 连接蚁剑
- 获取flag
双写后缀
- 了解一下双写后缀
有些站点判断方式会把文件后缀名替换为空字符,通过双写后缀的方法,服务器把后缀名进行替换,替换成空字符之后为被替换的剩余字符组成了符合白名单的后缀名 - 打开靶场检查源码,获得到可以通过的后缀名
- 直接上传
.php
文件后获得的相对路径没有后缀名,考虑到双写绕过
-
上传成功后获取正确的相对路径
-
post传参检查木马能否连接,连接成功
-
连接蚁剑
-
获取flag