手拿乾坤圈,脚踩缝纫机——文件上传漏洞篇(十六)

用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅

知识补给库

学习内容:图片马绕过

PHP函数

getimagesize()函数

getimagesize() 函数用于获取图像文件的大小信息,包括图像的宽度、高度、类型等。
函数原型:array getimagesize(string $filename, array &$imageinfo = null)

  • 参数
    • $filename:图像文件的路径或 URL
    • $imageinfo(可选):用于存储图像的额外信息,例如 MIME 类型
  • 返回值(返回一个数组,包含以下元素)
    • [0]:图像宽度(像素)
    • [1]:图像高度(像素)
    • [2]:图像类型(如 1 表示 GIF,2 表示 JPEG,3 表示 PNG 等)
    • [3]:HTML 的 heightwidth 属性字符串
$image_path = 'C:\Users\Armey\Desktop\upload_test.png';  
if ($size = getimagesize($image_path)) {  
    echo "Width: " . $size[0] . "\n";  
    echo "Height: " . $size[1] . "\n";  
    echo "Type: " . $size[2] . "\n";  
    echo "MIME type: " . $size['mime'] . "\n";  
} else {  
    echo "无法获取图像信息";  
} 

在这里插入图片描述

image_type_to_extension()

image_type_to_extension() 函数用于根据指定的图像类型返回对应的文件后缀名。
函数原型:string image_type_to_extension(int $imagetype, bool $include_dot = TRUE)

  • 参数
    • $imagetype:图像类型,通常是 IMAGETYPE_XXX 系列常量之一,例如 IMAGETYPE_PNGIMAGETYPE_JPEG 等。
    • $include_dot:是否在后缀名前加一个点(.)。默认值为 TRUE
  • 返回值
    • 该函数返回与指定图像类型对应的文件后缀名。如果失败,则返回 false
$image_path = 'C:\Users\Armey\Desktop\upload_test.png';  
if ($size = getimagesize($image_path)) {  
    echo "Width: " . $size[0] . "\n";  
    echo "Height: " . $size[1] . "\n";  
    echo "Type: " . $size[2] . "\n";  
    echo "MIME type: " . $size['mime'] . "\n";  
} else {  
    echo "无法获取图像信息";  
}  

echo image_type_to_extension($size[2]);

在这里插入图片描述

代码审计

打开第十五关的源代码,如下图所示
在这里插入图片描述

  • $temp_file为上传文件的临时保存目录
  • $res = isImage($temp_file);判断上传的文件是否为图片,是进行保存,不是显示上传失败
    isImage()函数是开发者自定义的函数,其实现代码如下图所示:

在这里插入图片描述

  • if(file_exists($filename))判断上传的文件是否存在。存在则继续向下执行
  • $info = getimagesize($filename);是获取上传图片的信息
  • $ext = image_type_to_extension($info[2]);获取上传图片的后缀

靶场实战

由于本关使用了getimagesize()函数获取图片的信息,因此使用修改文件头的形式就无法生效了

  • 原因:修改文件头依旧是PHP文件,不存在图片的宽度和高度等属性值

因此本关使用图片马进行绕过

图片马制作

准备一句话木马文件和一张正常的图片
在终端中输入命令:copy upload_test.png/b + muma.php muma.png

在这里插入图片描述

靶场测试

打开靶场第十五关,上传图片马
在这里插入图片描述

点击上传按钮后,图片马上传成功
在这里插入图片描述

查看图片马的存储位置
在这里插入图片描述

利用文件包含漏洞,解析图片马(原理在上一篇已讲,不在赘述)

  • 如果包含失败,切换一下PHP版本(版本太低会解析失败)

在这里插入图片描述

使用蚁剑连接上面的URL
在这里插入图片描述

补充

使用记事本打开制作好的图片马,在最后可以找到插入的一句话木马。

在这里插入图片描述

无情的广告时间

哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道人禅(armey)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值