【刷题13】CTFHub技能树-文件上传
文件上传
来源:CTFHub技能树
无验证
直接上传一句话木马,会显示路径,直接蚁剑连接找到flag。
前端验证
查看源代码,发现进行了前端验证,必须是jpg,png或者gif文件。
直接抓包改包发送绕过
上传成功,直接蚁剑连接找flag就行。
.htaccess
知识:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
介绍:hatccess文件,.htaccess是Apache的又一特色。
● 一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件),
● 提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
● 作为用户,所能使用的命令受到限制。
● 简单来说,就是我上传了一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。
所以先创建一个 .htaccess的文件,里面输入
<FilesMatch "pass777"> SetHandler application/x-httpd-php </FilesMatch>
表示文件名中包含pass777的文件都会被当作php执行
所以再写一个一句话木马,文件名中包含pass777,上传后用蚁剑连接就能拿到flag
ctfhub{2428d2cef017f7d0e902eaac}
MIME绕过
直接将一句话木马后缀改成jpg,然后抓包修改成php,蚁剑连接就能拿到
ctfhub{c76881cacfd16db8afee74fd}
00截断
根据前端提示,发现上传类型限制成了jpg,png,gif文件,并且如果文件类型被允许,构造目标路径(
$des
),该路径由$_GET['road']
(从URL的查询字符串中获取),一个随机数(10到99之间),当前日期和时间(格式为YmdHis
),以及文件扩展名组成,并使用move_uploaded_file()
函数将上传的文件从临时目录移动到目标目录($des
)所以在路径处修改成.php的路径,然后用%00截断,让后面添加的目录失效
由于我们修改了路径,所以保存路径就是原来的/upload/yjh-cmd.php
蚁剑连接challenge-a074b1b840a3ecbe.sandbox.ctfhub.com:10800/upload/123.php
ctfhub{e158c8b8eb6fdb23553ce830}
双写后缀
<!--
$name = basename($_FILES['file']['name']);
$blacklist = array("php", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf", "htaccess", "ini");
$name = str_ireplace($blacklist, "", $name);
-->
看提示发现过滤了一系列后缀,然后会把后缀替换成无,所以双写绕过,如:yjh.pphphp
ctfhub{a0a5473d07fac34189262488}
文件头检查
先随便上传一个文件,然后有提示
那就抓包修改文件类型,同时在一句话木马前加上GIF89a,用来表示这是一个图片
蚁剑连接得到flag
ctfhub{5602bccd8ab06a8c2408fb81}