file-upload绕过
前端校验
前段校验,狗都防不了
MIME验证
使用bp抓包,修改上传的content-type为image/png
文件内容头校验
主要是检测文件内容开始处的文件幻数
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”
(2) .gif,”GIF 89A”
(3) .zip,”Zip Compressed”
(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”
分析是否为黑名单或白名单
上传的后缀名写一个不存在的,如:shell.xxx 查看是否上传成功,成功为黑名单,失败为白名单
黑名单
- 特殊后缀
- 大小写绕过
- 双重后缀
- 空格绕过
- 点号绕过
- 特殊字符::$DATA绕过
- 加点空格点
- 上传shell.php 然后用bp改后缀加点空格点(即文件名为
shell.php. .
) - PS:补充知识:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来
- 上传shell.php 然后用bp改后缀加点空格点(即文件名为
白名单
%00截断
00截断原理是因为白名单判断的时候是判断后缀,在进行路径拼接的时候用的其他值,然后在进行move_uploaded_file的时候,这个函数读取到hex值为00的字符,认为读取结束,出现00截断。
- get %00截断
- post 00截断
- 抓包,在hex处修改
图片马 PS:需文件包含漏洞配合
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 GML的博客!