文件上传_白名单,内容检验,竞争上传
白名单校验
apache 解析缺陷
Apache得解析缺陷是Apache是从后面开始解析后缀,按最后一个合法后缀
详情参见:
https://www.cnblogs.com/milantgh/p/5116955.html
文件内容头校验
- getimagesize函数
https://www.php.net/manual/zh/function.getimagesize.php
当getimagesize函数的参数是一张图片时,会返回一个包含该图片信息的数组,如果不是图片,则返回false
看起来可以利用getimagesize函数来判断一个文件是不是图片,但其实它可以被轻易绕过,因为getimagesize函数判断一个文件是不是图片的依据是图片格式的文件头
只要在webshell前面加上对应的文件头就可以让getimagesize函数误以为这是图片
最常用的头标识是gif文件的GIF89a
1 | GIF89a |
竞争上传
问题代码示例
1 | if(isset($_POST['submit'])){ |
服务端先将上传的文件保存下来,然后再去判断其是否合法,不合法就删除。
这时只要访问速度够快,就能访问到上传的非法文件
上传的文件
1 |
|
可以通过bp不断的上传和访问该文件,访问成功就会写入一个webshell