Bootstrap

【刷题13】CTFHub技能树-文件上传

文件上传

来源:CTFHub技能树

无验证

直接上传一句话木马,会显示路径,直接蚁剑连接找到flag。

image-20241109112713829

image-20241109112741306

前端验证

image-20241109112850962

查看源代码,发现进行了前端验证,必须是jpg,png或者gif文件。

直接抓包改包发送绕过

image-20241109113155795

image-20241109113230322

上传成功,直接蚁剑连接找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截断

image-20241120203556473

根据前端提示,发现上传类型限制成了jpg,png,gif文件,并且如果文件类型被允许,构造目标路径($des),该路径由$_GET['road'](从URL的查询字符串中获取),一个随机数(10到99之间),当前日期和时间(格式为YmdHis),以及文件扩展名组成,并使用move_uploaded_file()函数将上传的文件从临时目录移动到目标目录($des

所以在路径处修改成.php的路径,然后用%00截断,让后面添加的目录失效

image-20241120204749984

由于我们修改了路径,所以保存路径就是原来的/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}

文件头检查

先随便上传一个文件,然后有提示

image-20241120211213870

那就抓包修改文件类型,同时在一句话木马前加上GIF89a,用来表示这是一个图片

image-20241120211402688

蚁剑连接得到flag

ctfhub{5602bccd8ab06a8c2408fb81}

;