当前位置: 首页 > news >正文

【文件读写】图片木马

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

      该代码定义了一个 getReailFileType函数,其工作原理是打开用户上传的临时文件,以二进制模式读取前2个字节。随后,使用 unpack函数将这两个字节解析为两个无符号字符(C2chars),并将它们的十进制值拼接成一个整数 $typeCode。通过一个 switch语句匹配该整数,从而判断文件类型:255216对应 JPEG(字节为 FF D8),13780对应 PNG(字节为 89 50),7173对应 GIF(字节为 47 49)。若类型匹配,则使用该类型扩展名重命名文件并移动到指定上传目录;若为 unknown,则上传被拒绝。

       在主流程中,代码通过 isset($_POST['submit'])检测表单提交,获取上传文件的临时路径,并调用 getReailFileType函数检测真实文件类型。这是一种基于文件内容本身的初步验证方法,比单纯检查文件名扩展更为可靠。

1.准备「图马」任选一张小图 pic.jpg,命令行拼接:

linux系统命令:

用文件包含漏洞执行
靶场会给出一个 include.php(或 ?file= 参数),把图片路径传进去:

http://localhost:7298/upload-labs/include.php?file=upload/xx20251007.jpg

该页面会把图片内容当成 PHP 解析,木马生效。

再通过蚁剑连接

http://www.dtcms.com/a/452963.html

相关文章:

  • 如何避免消息丢失
  • 设备管理平台项目部署
  • 最小二乘法(Least Squares Method):原理、应用与扩展
  • 13. Pandas 透视表与交叉表分析
  • Edu161 D、E 模拟+位运算构造
  • 临床研究三千问——如何选择合适的研究类型(12)
  • 电销做网站的话术响应式网站是
  • Channel 的核心特点 (Channel vs SharedFlow 选择对比)
  • 什么网站权重高wordpress置顶代码
  • 厦门app网站设计青岛队建网站
  • 【Linux】Linux进程信号(下)
  • C++基础:(九)string类的使用与模拟实现
  • C++网络编程(二)字节序与IP地址转换
  • 从零开始XR开发:Three.js实现交互式3D积木搭建器
  • 如何解决网站只收录首页的一些办法wordpress多站点内容聚合
  • 个人备忘录的设计与实现
  • 删除cad无关线条 的ppo 随手记
  • Python AI编程在微创手术通过数据分析改善恢复的路径分析(下)
  • 深度学习之神经网络1(Neural Network)
  • pycharm下创建flask项目,配置端口问题
  • 计算机科学中的核心思想与理论
  • SpringCloud,vue3应用使用AlibabaCloudToolkit自动化部署到远程服务器上的docker
  • 如何从RSSI和SNR 判断现场的LoRaWAN的信号质量?
  • 【万字解读】品牌SEO实战指南:7步打造AI时代的搜索权威
  • 网站短期就业培训班开发公司总经理管理方案
  • GitHub 热榜项目 - 日榜(2025-10-07)
  • TDengine 比较函数 NULLIF 用户手册
  • SSM面试题学习
  • 网站建设练手项目我是做装修什么网站可以
  • Effective Python 第41条:考虑用mix-in类来表示可组合的功能