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 通关纪实 pass2

uplload 通关纪实 pass14

uplload 通关纪实 pass14

uplload 通关纪实 pass19

uplload 通关纪实 pass19

uplload 通关纪实 pass19