CTFHub-文件上传
无验证 前端验证 .htaccess MIME绕过 文件头检查 00截断 双写后缀
无验证
- 打开靶场获取信息,为无限制的文件上传,随便写入一个
.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
文件头检查
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
|