CTFHub-Web-文件上传练习

目录

    • 0x00 无验证
    • 0x01 前端验证
    • 0x03 .htaccess
    • 0x04 MIME绕过
    • 0x05 文件头检查
    • 0x06 00截断
    • 0x07 双写后缀
    • 总结

0x00 无验证

CTFHub-Web-文件上传练习_第1张图片

上传一句话木马1.php

  @eval($_POST["pass"]);?> 

上传文件相对路径upload/1.php
CTFHub-Web-文件上传练习_第2张图片
使用蚁剑连接,连接密码为pass
CTFHub-Web-文件上传练习_第3张图片
查看目录,flag就在这里
CTFHub-Web-文件上传练习_第4张图片

0x01 前端验证

CTFHub-Web-文件上传练习_第5张图片

上传一句话木马,结果提示该文件不允许上传
CTFHub-Web-文件上传练习_第6张图片
题目是前端验证,直接查看网页源代码,发现只能上传.jpg,.png,.gif三种格式的文件
CTFHub-Web-文件上传练习_第7张图片

把1.php改为1.jpg,然后上传抓包

CTFHub-Web-文件上传练习_第8张图片
1.jpg再改为1.php,然后放包
CTFHub-Web-文件上传练习_第9张图片
上传成功,得到相对路径upload/1.php
CTFHub-Web-文件上传练习_第10张图片
还是一样的操作,蚁剑连接,查找目录,找到flag
CTFHub-Web-文件上传练习_第11张图片

0x03 .htaccess

题目描述:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

访问
CTFHub-Web-文件上传练习_第12张图片
查看源代码,发现文件后缀都被禁用了
在这里插入图片描述

百度一下hatccess文件,.htaccess是Apache的又一特色。一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件)

.hatccess文件有两种写法

第一种方法:
下面代码的意思是,只要文件名中包含pass,就会被Apache解析为php文件。

<FilesMatch "pass">
SetHandler application/x-httpd-php
</FilesMatch>

提示文件名不能为空,命名为3.hatccess,用bp抓包,将3.htaccess改为.htaccass,然后放包
CTFHub-Web-文件上传练习_第13张图片

.htaccass文件上传成功
CTFHub-Web-文件上传练习_第14张图片
把上面用到的1.php改为3.pass文件,上传文件相对路径upload/3.pass
CTFHub-Web-文件上传练习_第15张图片

蚁剑连接,可以看到上传的文件
CTFHub-Web-文件上传练习_第16张图片
查找flag
CTFHub-Web-文件上传练习_第17张图片

第二种方法:·

内容为

AddType application/x-httpd-php .jpg

就成功地使该.htaccess文件所在目录及其子目录中的后缀为.jpg的文件被Apache当做php文件

上传test.htaccess

CTFHub-Web-文件上传练习_第18张图片

上传成功
CTFHub-Web-文件上传练习_第19张图片

再上传3.jpg,内容为 ,获取到上传文件路径
CTFHub-Web-文件上传练习_第20张图片
蚁剑连接,连接成功。
CTFHub-Web-文件上传练习_第21张图片

参考文章:文件解析漏洞

0x04 MIME绕过

CTFHub-Web-文件上传练习_第22张图片
直接上传4.php,提示文件类型不正确
CTFHub-Web-文件上传练习_第23张图片

来使用MIME绕过,百度了解一下MIME

MIME(Multipurpose Internet MailExtensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

MIME多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式每个MIME类型由两部分组成,前面是数据的大类别,例如声音 audio、图象 Image等,后面定义具体的种类。

常见的MME类型,例如:

#text表明文件是普通文本
text/plain
text/html
#image表明是某种图像或者动态图(gif)
image/jpeg
image/png
#audio表明是某种音频文件
audio/mpeg
audio/ogg
audio/*
#video表明是某种视频文件
video/mp4
#application表明是某种二进制数据
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream

上传4.php,使用bp抓包,修改Content-Typed的值,改成Content-Type: image/jpeg,然后放包
CTFHub-Web-文件上传练习_第24张图片
上传成功,得到文件相对路径
CTFHub-Web-文件上传练习_第25张图片
蚁剑连接,查找目录文件,即可得到flag
CTFHub-Web-文件上传练习_第26张图片

参考文章: MIME 类型

0x05 文件头检查

CTFHub-Web-文件上传练习_第27张图片

上传一句话木马5.php,提示文件类型不正确

CTFHub-Web-文件上传练习_第28张图片
再把5.php修改成5.jpg上传,发现提示文件错误
CTFHub-Web-文件上传练习_第29张图片
尝试MME绕过,上传5.php,抓包,修改Content-Typed的值,然后放包,发现提示文件错误
CTFHub-Web-文件上传练习_第30张图片

应该是对文件内容进行了检测,来制作一个图片码m.php
在这里插入图片描述
抓包修改Content-Type的值,放包
CTFHub-Web-文件上传练习_第31张图片
结果提示文件错误
CTFHub-Web-文件上传练习_第32张图片

看了大师傅的wp,说尽量换小一点的图片,就会成功,这次换了一个非常小的图片,重新制作图片马
在这里插入图片描述

上传flag.php,抓包修改Content-Type的值为image/png
CTFHub-Web-文件上传练习_第33张图片
上传成功,得到上传路径
CTFHub-Web-文件上传练习_第34张图片

蚁剑连接,拿到flag
CTFHub-Web-文件上传练习_第35张图片

0x06 00截断

了解一下00截断,关于上传中的00截断分析
CTFHub-Web-文件上传练习_第36张图片

上传一句话木马,提示文件类型不匹配, 但在url栏出现了路径信息
CTFHub-Web-文件上传练习_第37张图片
查看源代码
CTFHub-Web-文件上传练习_第38张图片
上传shell.jpg,抓包
CTFHub-Web-文件上传练习_第39张图片
构造00截断,添加shell.php%00,放包
CTFHub-Web-文件上传练习_第40张图片
上传成功路径为upload/shell.php,蚁剑连接
CTFHub-Web-文件上传练习_第41张图片
拿到flag
CTFHub-Web-文件上传练习_第42张图片

0x07 双写后缀

CTFHub-Web-文件上传练习_第43张图片

上传一句话木马shell.php,虽然上传成功,但后缀却消失了
CTFHub-Web-文件上传练习_第44张图片
查看源码,$name = str_ireplace($blacklist, "", $name);,变量blacklist里面的值会被替换,后缀被过滤了
CTFHub-Web-文件上传练习_第45张图片
继续上传shell.php,然后抓包修改成shell.pphphp,中间的php字符串被过滤,剩下的php就组合成了php

CTFHub-Web-文件上传练习_第46张图片
文件上传成功,得到文件上传路径
CTFHub-Web-文件上传练习_第47张图片
蚁剑连接,flag就在这
CTFHub-Web-文件上传练习_第48张图片

总结

我们可以通过上传一些平时不怎么用的容易被人忽视的文件扩展名,来绕过这种类型的验证。

黑名单绕过
通过上传不受欢迎的php扩展来绕过黑名单。例如:pht,phpt,phtml,php3,php4,php5,php6

白名单绕过
通过某种类型的技巧来绕过白名单,例如添加空字节注入(shell.php%00.gif),或使用双重扩展来上传文件(shell.jpg.php)。

扩展名大小写来绕过
例如:pHp,Php,phP。

双写后缀绕过
例如:pphphp

你可能感兴趣的:(CTFHub,CTF,php,shell,安全漏洞)