uplload 通关纪实 pass14

Posted 安全界 的彭于晏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uplload 通关纪实 pass14相关的知识,希望对你有一定的参考价值。

这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件。
使用 图片码 + 文件包含 绕过。

源代码如下:

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 = "上传出错!";
        }
    }
}


首先制作一个图片马:
在这里插入图片描述
然后上传这个图片马,并用burp抓包:
在这里插入图片描述
之后把这个包发送到repeater模块,然后点击go,发现成功上传:
在这里插入图片描述
接着输入以下网址,利用include.php实现文件包含,成功访问到网页:
在这里插入图片描述
之后连接菜刀:
在这里插入图片描述
成功访问到:
在这里插入图片描述

以上是关于uplload 通关纪实 pass14的主要内容,如果未能解决你的问题,请参考以下文章

uplload 通关纪实 pass15

uplload 通关纪实 pass15

uplload 通关纪实 pass18

uplload 通关纪实 pass18

uplload 通关纪实 pass18

uplload 通关纪实 pass7