文件上传-文件内容验证

文件内容检查

  1. content-type检查
  2. 文件头检查绕过
  3. getimagesize()函数
  4. php_exif()模块检查
  5. imagecreatefromjpeg⼆次渲染

测试流程

  1. 上传一张正常图片, 验证上传功能是否正常
  2. 最好直接上传一张图片马, 可绕过content-type, 文件头, getimagesize(), php_exif检查
  3. 针对二次渲染, 寻找图片数据中不会被转换的部分, 将代码插入其中

content-type检查

绕过:使用burp suite抓包直接修改content-type值

文件头检查绕过

在文件头部添加gif89a

gif89a
<?php
phpinfo();
?>

图片一句话 结合文件包含漏洞或者解析漏洞

getimagesize()函数

绕过
在文件头部添加gif89a
图片一句话, 结合解析漏洞或文件包含漏洞

imagecreatefromjpeg二次渲染

二次渲染: 就是根据用户上传的图片, 新生成一个图片, 将原始图片删除, 将新图片添加到数据库中。 比如一些网站根据用户上传的头像生成大中小不同尺寸的图像。

绕过:寻找渲染前后不变的地方, 替换成一句话