DVWA详解

第一关 暴力破解

源代码这里查看!!

抓包工具 抓到数据包

设置变量,因为有token,所以我们最好要提前得到用户名,不然工作量太大了

这里的用户名我们提前知道是 admin

设置两个变量

Sniper: 单参数爆破,多参数时使用同一个字典按顺序替换各参数,只有一个数据会被替换

Battering ram: 多参数同时爆破,但用的是同一个字典,每个参数数据都是一致的

Pichfork: 多参数同时爆破,但用的是不同的字典,不同字典间数据逐行匹配

Cluster bamb: 多参数做笛卡尔乘积模式爆破

如果是用户名和密码,可以用第四种方式进行爆破

设置token参数

1.修改线程为1

2.下拉找到Grep--extract,勾选“从响应中提取以下项目”(这里是为了从我们的请求中提取token,分辨特征,以便为每个密码找到对应的token

3.点击添加,在弹出的界面里点击获取回复,从回复的数据里找到token的值,双击选中,上半部分的页面会自动分辨填值,得到token的特征,方便从回复中找到token,这里的token要复制一遍,方便在后面直接填充

4.选取value

5.回到有效载荷界面,设置第二个参数。有效载荷类型改为递归搜索,英文为recursive grep。

在第一个请求的初始有效负载部分把我们复制的token粘贴上去

设置完毕,开始爆破

发现字长不一样的就是成功登录了

第二关 Command Injection

打开界面之后 输入ip地址,我们尝试输入自己的ip地址:127.0.0.1

发现返回的结果与ping命令类似 ,本关卡的题目是命令注入,那么可能我们有机会在输入框执行系统命令

源码分析

这里执行的ping命令

这里需要一下命令连接符的知识

&:前面一个命令无论是否执行,后面的命令都能执行,两个命令都能执行

&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行

|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个

||:前面一个命令不能正常执行,才能执行后面一个命令

源码中对这些连接符进行了一个过滤,我们仔细审计代码,发现 '| ' 是过滤的|+空格,所以过滤其实是无效的,我们不加空格就不会被过滤。

我们输入127.0.0.1 |ls

第三关 CSRF

题目的要求是更改管理员密码,我们抓包看看数据情况

发现有password_new ,password_conf ,新密码以及新密码确认,change状态,以及一个token

这里还有一个referer数据

那么我们可以构造一个页面,里面放一个a标签,链接为更改密码的url,当受害者点击时就会触发更改密码的操作,我们只需要把这个页面html的位置放在和网站同一个目录下,即在自己的电脑上构造一个能够访问目标网站域名的html文件。

设计的url:http://127.0.0.1:8001/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

把设计的html页面名字改为网站的ip地址,里面的a标签就是更改密码的操作

但是我们这里还有一个token的验证,每次登录都会校验token是否正确,

获取用户token的方式有两种:

1.构造一个页面让用户点击,点击之后偷偷读取用户登录网站的token,把token加到自己构造的更改密码的表单上做让用户点击完成攻击,但由于同源策略,一般无法获得token

2.如果用户网站上存在存储型漏洞,可以利用存储型漏洞与CSRF漏洞相结合,即通过存储型漏洞获得token再结合csrf漏洞完成攻击

源码:

第四关 文件包含

点击三个文件看看,我们发现三个文件都返回了不同的数据,并且传递了一个参数给page

查看后端代码

关键代码为 使用fnmatch()函数对page参数进行过滤,要求page必须以“file”开头,服务器才会包含文件。

可利用file协议进行读文件

file://

有点问题,我读不出来文件

先做文件上传

第五关 文件上传

首先我们准备一个一句话木马文件

<?php phpinfo();?> a.php

先上传试试,发现被拦截

查询后端源代码

strrpos(string , find ,start): 查找find字符在string字符中的最后一次出现的位置,start参数可选,表示指定从哪里开始

substr(string,start,length): 返回string字符中从start开始的字符串,length参数可选,表示返回字符的长度

strtolower(string): 返回给定字符串的小写

我们发现源码中对字符串进行截断,白名单验证

它接受jpg文件,那我们可以制作图片马

copy 1.jpg/b + 1.php/a 2.jpg

这里要注意的是png文件是/a

文件上传成功!

第六关 sql注入

简单模式

进行的尝试

这里注意的是,在1位置进行的注入语法错误,我们选择在2位置尝试注入

成功获取到用户名以及密码,密码md5解密

中等难度

我们发现不同的id中 没有在url中传参,抓包试一试

发现·数据是以post的格式传输的,我们在burpsuit中进行注入

发现可以,那么按照上次的步骤进行注入,查询到用户名和密码

高级难度

提示我们要点击一个链接去查询

SQL盲注

low

使用sqlmap

python sqlmap.py -u "http://192.168.1.109:8001/vulnerabilities/sqli_blind/?id=1%27&Submit=Submit#" -cookie="PHPSESSID=b7sj8oj9r1qadbuq646eu4vp15; security=low" -current-db

参数解析:加cookie是因为dvwa需要登陆

得到当前的database

python sqlmap.py -u "http://192.168.1.109:8001/vulnerabilities/sqli_blind/?id=1%27&Submit=Submit#" -cookie="PHPSESSID=b7sj8oj9r1qadbuq646eu4vp15; security=low" -current-db -D dvwa -tables

python sqlmap.py -u "http://192.168.1.109:8001/vulnerabilities/sqli_blind/?id=1%27&Submit=Submit#" -cookie="PHPSESSID=b7sj8oj9r1qadbuq646eu4vp15; security=low" -current-db -D dvwa -tables -T users -columns

获取数据信息

python sqlmap.py -u "http://192.168.1.109:8001/vulnerabilities/sqli_blind/?id=1%27&Submit=Submit#" -cookie="PHPSESSID=b7sj8oj9r1qadbuq646eu4vp15; security=low" -current-db -D dvwa -tables -T users -columns -C user,password -dump

Medium

在get数据栏中没有发现参数传递,我们猜测是通过post传参。抓包验证一下

那我们的思路就是写一个文本,然后用sqlmap进行爆破

将当前页面的数据包信息,复制到本地的txt文本里面,并在id=处标记*号

将文本保存到sqlmap的根目录

进行爆破python sqlmap.py -r 1.txt -current-db 获取数据库名

爆破代码同上

爆破成功

High

与sql注入高级一样,是一个链接

这里输入一个url但是相应的是另一个url

故使用参数 -second-url(设置二阶响应的结果显示界面的url)

传参为id=1&Submit=Submit

代码为

python sqlmap.py -r 1.txt -second-url=http://192.168.1.109:8001/vulnerabilities/sqli_blind/ -current-db -C dvwa -tables

XSS(Reflected)

Low --直接在输入框输入

<script>alert(1)</script>

Medium

肯定是过滤了,我们查看一下源码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值