PHP检测图片是否有木马

header("Content-type: text/html; charset=utf-8");
function checkHex($img) {
  $status = 0;
  $tips = array(
    "0" => "文件没问题",
    "5" => "文件有毒",
    "-1" => "文件没有上传"
  );
  if (file_exists($img)) {
    $resource = fopen($img, 'rb');
    $fileSize = filesize($img);
    fseek($resource, 0);
    if ($fileSize > 512) { // 取头和尾
      $hexCode = bin2hex(fread($resource, 512));
      fseek($resource, $fileSize - 512);
      $hexCode .= bin2hex(fread($resource, 512));
    } else { // 取全部
      $hexCode = bin2hex(fread($resource, $fileSize));
    }
    fclose($resource);
    /* 匹配16进制中的 <% ( ) %> */
    /* 匹配16进制中的 <? ( ) ?> */
    /* 匹配16进制中的 <script | /script> 大小写亦可 */
    if (preg_match("/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)) {
      $status = 5;
    }
  } else {
    $status = -1;
  }
  return $tips[$status];
}

$rs = checkHex("du.png");

print_r($rs);
Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计