文件上传漏洞

本文深入探讨文件上传漏洞,包括概念、过滤绕过技巧,如%00截断、content-type绕过及空格修改等,旨在提高网络安全意识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1文件上传漏洞概述

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,有时候几乎没有什么技术门槛(以上内容摘自白帽子讲web安全)

1.2过滤(格式限制)

通常我们所上传的文件格式是被限制的,而要上传一个PHP文件,可以利用验证扩展名的方式存在的问题进行绕过,另外是结合PHP和系统的特性,导致了可以截断文件名来绕过黑名单限制。

1.3截断方法

(1)最常见的截断方法,“%00”截断,如"1.php%00.jpg",这里验证扩展名是拿到的扩展名是jpg,写入的时候被%00截断,最终写入文件1.php。
(2)文件头,content-type绕过,因为有些程序用了不可靠的函数去判断是不是图片文件,比如getmagesize()函数,只要文件头hsi"GIF89a",它就会正常返回一个图片数组。
(3)没有trim()函数,可以用空格绕过,当有trim()函数时,可以在文件名后面利用16进制修改原预留的空格20位81~99中的一个。

1.4上题

题目链接
随便上传一个PHP文件,抓包截图:
在这里插入图片描述
显示仅支持上传jpg,gif,png后缀的文件,所以试着将1.php修改成1.jpg,截图如下:
在这里插入图片描述
又显示要求上传后缀名为PHP的文件才行,在将1.jpg改成1.php.jpg,截图如下:
在这里插入图片描述
没啥效果,只是filename变为了1.php,再改一下1.jpg.php,截图如下:
在这里插入图片描述
与1.php显示效果基本一样,所以应该后缀名为jpg才能成功验证,再将filename改为1.jpg,/uploads/后面加上1.php,看截图:
在这里插入图片描述
此时的文件名变为了1.php1,扩展名为jpg,这是试一试00截断,为了方便定位,可以在1.php之后加一个空格,空格对应的hex码值为20,找到20,将其改为00,go一下,看截图:

在这里插入图片描述
在这里插入图片描述
get flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值