【文件上传基本原理讲解】

一、文件上传漏洞简介

请添加图片描述

二、使用php实现文件上传功能

请添加图片描述

三、普通上传型

请添加图片描述
请添加图片描述
我们可以看到upload先获取了file的变量,再获取了小写后的文件名获取后缀,匹配文件名后缀是不是.php,如果是就返回false,然后再设置上传限制。那么我们再通过判断文件源码发现只对上传文件的第一个file进行的过滤,如果我们上传两个文件,第一个为正常的文件,第二个为我们需要上传的文件,就可以绕过过滤,我们用python构造一个请求:
请添加图片描述
使用open读取两个文件,pure为正常文件,eval为我们想要的文件,再设置一个代理,这个代理是burp的代理,构造一个files来提交文件,通过post请求提交我们的文件,通过burp查看我们的请求有没有提交成功:
请添加图片描述
发现文件正常提交,服务器返回了file路径,但是却没有返回第二个文件的路径

uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。

基于我们对php文件的了解,这个文件名应该是用时间戳来命名的,用的uniqid(),我们可以确定后缀是php,那么我们只需要爆破后三到四位就行,因为我们是同时上传的两个文件,那么两个文件的上传时间是差不多的,当uniqid两个时间差不多时,只有后几位会有变动如下图所示:请添加图片描述
所以我们只需要爆破文件的后三到四位即可,丢进burp里面爆破了4万多次后成功获取到文件名:
请添加图片描述

也可以用python脚本一起上传后直接爆破,下面是代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值