能够绕过图像验证

时间:2017-03-10 17:47:01

标签: php laravel laravel-5 laravel-5.4

我在图像中包装了一个可执行文件,其中包含以下内容 -

GIF89a<?php
echo 'hacked';
?>

并将其保存为文件名 image.gif

现在,当我上传此图片时,它可以绕过图片尺寸验证。

'photo' => 'required|image|dimensions:min_width=20,min_height=20',

有没有办法验证这种图像?

我尝试过的解决方法 -

使用PHP函数getimagesize()但它返回

array:6 [▼
  0 => 16188
  1 => 26736
  2 => 1
  3 => "width="16188" height="26736""
  "channels" => 3
  "mime" => "image/gif"
]

虽然图片无效,但仍然有效宽度身高

1 个答案:

答案 0 :(得分:1)

this article通知时,GIF文件有一个标题字段,后跟维度。您所做的事情具有在维度部分中有效的字节,因此将被解析为维度。这对于验证GIF imposer是不完整的。您需要对GIF字节进行更深入的分析,以确保它不包含有害的有效负载。