知识点:
1.文件上传--前端验证(如果是纯前端验证,那么我们可以直接检查元素修改代码即可绕过上传)
2.文件上传-黑白名单(意思就是网站设立黑白名单,允许上传什么类型文件等)
3.文件上传-.user.ini的妙用
4.文件上传-PHP语言特性
本文分享全部基于PHP的语言
详细点:
1.检测层面:前端,后端等
2.检测内容:文件头,完成性,二次渲染等
3.检测后缀:黑名单,白名单、MIME检测等
4.绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
前置知识点:这里给大家说明一个问题,因为我在学的时候也思考很久。假如我们上传后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外),如:我们上传后门文件格式为jpg,图片里边有后门代码,不能被触发,所以连接不上后门。
案例演示:CTFSHOW--文件上传
151:改关卡为纯前端验证,查看源代码允许上传png格式,我们直接修改为PHP后,直接上传php后门代码成功。
152:同上操作后提示文件类型不合规,我们简单抓包发现MIME检测,直接修改Content-Type: image/png,成功上传。
153:js验证+.user.ini
.user.ini不过多介绍自行百度,我们上传.user.ini文件,内容为auto_prepend_file=test.png,这句话什么意思呢?说白了这是将test.png当作代码执行,正如前期所说直接上传png图片后门是不会执行的,但是这里我们用到.user.ini后就能将图片后门当作代码执行。
154-155:js验证+.user.ini+短标签
我们知道php代码都有<?php?>这样的格式,那么不加标签要怎么运行php呢(因为过滤的php关键字段,我们不能写完整的代码,就得用到短标签绕过)
<?