file-upload

通过前面的爆破就发现,后端校验比前端校验更安全,更可靠,一切在前端做的安全措施都是不靠谱的,仅起到辅助作用,但是前端校验可以增加用户体验,前端校验防君子,后端校验防小人

client check

首先只能上传图片,

查看源码,上传位置有HTML onchange该元素 “在元素值改变时触发”

将“checkFileExt(this.value)“属性删除,再次上传php就成功了

MIME type

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。  https://baike.baidu.com/item/MIME/2900607?fr=aladdin#1

尝试上传kk.php,

在HTTP中,MIME类型被定义在Content-Type header中。

例如,假设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“excel”。在大多数实际情况中,这个文件然后将传送给Excel来处理(假设我们设定Excel为处理特殊MIME类型的应用程序)。在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性。

使用burp,修改,修改content-type为图片类型,然后发送,通过HTTP头的修改,绕过了MIME type验证,上传成功,并使用kkk.php一句话控制。

Getimagesize

php getimagesize 函数 – 获取图像信息 | 菜鸟教程  可参考  

getimagesize():它是php提供的,判断目标文件是否为图片

通过该文件的前面几个字符串,来判断文件类型。

getmagesize()返回结果中有文件大小和文件类型。

思路:getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否为图片的话,会存在问题

因此可以通过伪造十六进制的头部字符串来绕过getimagesize()函数,从而达到上传的效果。

十六进制的头部的前面的几个字符串基本上是一样的,操作如下图,将png图片ikun1.png  copy 一下,生成ikun.png 进行伪造,在图片16进制末尾插入想要的代码。

上传显示成功

包含了恶意代码的图片即使绕过了Getimagesize,但图片里的php代码,并未执行

因此要结合本地包含文件漏洞使用。有时间在做吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值