前言:
即使是最详尽的黑名单也可能被经典的混淆技术绕过。假设验证代码区分大小写并且无法识别它exploit.pHp实际上是一个.php文件。如果随后将文件扩展名映射到 MIME 类型的代码不区分大小写,则这种差异允许您将恶意 PHP 文件偷偷通过验证,最终可能由服务器执行。
还可以使用以下技术获得类似的结果:
第一步:登录网站,上传文件,该测试网站只允许上传图片类型的文件
第二步:打开Burp的代理历史记录中,找到POST /my-account/avatar用于提交文件上传的请求。将此发送到 Burp 的“重发器”。
第三步:我们修改filename参数的值,使用混淆文件扩展名绕过检测。
Content-Disposition: form-data; name="avatar"; filename="e.php%00.jpg"
第四步:发送请求,提示文件上传成功,接下来在代理历史记录中找到GET /files/avatars/文件名 请求,就可以查看返回的结果了。
这里之所以会返回“400”,是因为服务器端不存在e.php%00.jpg这个文件,经过编译是以e.php的形式存储在服务器,将它发送到“重发器”修改文件名,重发就可以查看返回的结果了。
提交密码,实验完成!