upload-pass13

源码截取

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;
}

源码通过二进制的方式查看文件前2字节(文件头)是否为合法文件。

一般而言jpg、png、gif这类格图片格式的前几个字符(16进制下)都是一样的,有些防护手段也是通过这种特征码来判断的。

 

 

可以突破上传,但是png格式无法解析php的代码,需要配合文件包含漏洞组合攻击。

 

posted @ 2019-09-26 11:18  X38072  阅读(317)  评论(0编辑  收藏  举报