php imagepng quality 0 文件变大_文件上传漏洞uploadlabs靶场1319关

Less13 利用文件包含绕过

0x01 Less13说明

查看源代码

function getReailFileType($filename){
        $file = fopen($filename, "rb");    $bin = fread($file, 2); //只读2字节    fclose($file);    $strInfo = @unpack("C2chars", $bin);        $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);        $fileType = '';        switch($typeCode){              case 255216:                        $fileType = 'jpg';            break;        case 13780:                        $fileType = 'png';            break;                case 7173:                        $fileType = 'gif';            break;        default:                        $fileType = 'unknown';        }            return $fileType;}$is_upload = false;$msg = null;if(isset($_POST['submit'])){
        $temp_file = $_FILES['upload_file']['tmp_name'];    $file_type = getReailFileType($temp_file);    if($file_type == 'unknown'){
            $msg = "文件未知,上传失败!";    }else{
            $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;        if(move_uploaded_file($temp_file,$img_path)){
                $is_upload = true;        }        else{
                $msg = "上传失败";        }    }}

         这一关只是对文件中的前两个字节进行判断,因此可以制作一个图片马,但是这一关需要配合文件包含漏洞,因此可以在upload目录下写一个存在文件包含漏洞的php文件,两者结合getshell。

0x02 文件上传
方法一:使用文件包含漏洞绕过

①:在服务器上写入include.php(假设实际环境中存在文件包含)

8d8dbe582202910522509ce594d48bb9.png

②:制作一句话木马

e98300d55111eea0d0cc8082a1c7b228.png

使用这种方法可以制作图片马,但是上传失败(可能是图片太大,超过了限制。)

因此使用下面方式直接写入图片马

92875da80f566a92ac7229c539dde195.png

③:上传文件并用burp抓包

b61aa111cea2ac5541dfccaa80e858f3.png

④:使用文件包含漏洞

ba5270cd67fa80ef115650d6c258c08d.png

0x03 方法总结

         在现实环境中,对于有些文件上传限制的比较死,因此需要结合其他漏洞来进行利用,比如文件包含漏洞等。一般在URL里面存在?page、?file、?home等,就可能存在文件包含漏洞。如果发现文件包含漏洞,就可以尝试寻找上传点进行上传,利用文件包含进行解析,在PHP环境中,如果存在文件包含漏洞,那么该文件将优先被当作php类型进行解析。

Less14 利用图片马绕过

0x01 Less14说明

查看源代码

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)){
                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() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,我们在图片中插入一句话并且可以正常显示图片绕过此函数。

0x02 文件上传
方法一:使用图片马绕过

①:在服务器上写入include.php(假设实际环境中存在文件包含)

ea04ed1ed735c77b99e39bc4533f65fe.png

②:制作图片马

copy 1.jpg/b + 1.php/a phpinfo.jpg

参数/b指定以二进制格式复制、合并文件; 用于图像类/声音类文件

3e9d8edbeec355d1a143bfefcd1a8c67.png

③:上传jpg文件

1d6ad7c317beff03b297ed5d693fead8.png

上传失败

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值