网络安全 文件上传漏洞-14 第十四关 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函数和image_type_to_extension 获取图像的后缀。

$info = getimagesize($filename);

其中,$filename是要获取信息的图像文件的路径。该函数返回一个数组$size,数组元素如下:

  • $size[0]: 图像的宽度
  • $size[1]: 图像的高度
  • $size[2]: 图像的类型
  • $size[3]: 图像的MIME类型
  • $size[bits]: 图像的位深度
  • $size[channels]: 图像的通道数
  • $size[mime]: 图像的MIME类型

$ext = image_type_to_extension($info[2]) : 根据指定的图像类型返回对应的后缀名。

striipos()函数返回字符串在另一个字符串中第一次出现的位置。(这里用来判断后缀名是否为图片)

getimagesize()在获图像信息的时候,会涉及到图像的读取,此时我们可以利用该漏洞,上传图片马。制作过程同第十三关(十三关题解),使用copy命令,然后上传图片马。

构造url地址,并访问,从而获得目标服务器的php信息

上一关(网络安全 文件上传漏洞-13 第十三关 Pass-13

下一关(网络安全 文件上传漏洞-15 第十五关 Pass-15

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值