点击十五关,并选择显示源码:
function isImage($filename){
//需要开启php_exif模块
$image_type = exif_imagetype($filename);
switch ($image_type) {
case IMAGETYPE_GIF:
return "gif";
break;
case IMAGETYPE_JPEG:
return "jpg";
break;
case IMAGETYPE_PNG:
return "png";
break;
default:
return false;
break;
}
}
$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 = "上传出错!";
}
}
}
exif_imagetype()函数读取图像的第一个字节并检查其签名,返回对应图像的常量,如果该函数在读取到的第一个字节里没有找到图像的签名,返回FALSE。
因为图像读取图像内容,然后在检查签名,所以我们可以考虑在图片中注入木马,这里仍然使用copy命令注入一句话木马,方式和第十三关相同(十三关题解),然后上传图片马,并复制其地址
利用获得的图像地址构造url并在浏览器访问,从而获得服务器php信息
上一关(网络安全 文件上传漏洞-14 第十四关 Pass-14)