DVWA低等级通关指南-超详细版

欢迎各位到我的博客参观呀,大家共同学习

chenjingjiu.cn

1.Brute Force

一打开就是这种界面,因为是brute force,所以先尝试爆破

DVWA低等级通关指南-超详细版_第1张图片


查看一下源代码

DVWA低等级通关指南-超详细版_第2张图片


没有任何防护手段,直接上BP

DVWA低等级通关指南-超详细版_第3张图片


Ctrl+I进入intruder模块

DVWA低等级通关指南-超详细版_第4张图片


先clear ,然后选中要爆破字段,点击add

DVWA低等级通关指南-超详细版_第5张图片


设置Payloads

DVWA低等级通关指南-超详细版_第6张图片


选择字典

DVWA低等级通关指南-超详细版_第7张图片


读取以后

DVWA低等级通关指南-超详细版_第8张图片


可以看到共有2107条记录,接下来设置Options,设置线程数,重试时间(只有pro版本有这个功能,普通版本无法进行设置,默认的也可以,就是速度慢一些)

DVWA低等级通关指南-超详细版_第9张图片


点击右上角的Start attack!

DVWA低等级通关指南-超详细版_第10张图片


此时正在尝试对密码进行爆破,图中白框中出现的是尝试过的,点击可以查看详情

DVWA低等级通关指南-超详细版_第11张图片


这是请求头,最主要是看上面蓝框中的Length字段,找出与众不同的一项

DVWA低等级通关指南-超详细版_第12张图片


点击length就可以对响应包的长度进行排序,找最大或最小的值,然后看这个HTTP请求的响应报文

DVWA低等级通关指南-超详细版_第13张图片


点击Response可以看响应报文信息,从响应报文中可以看出,红框中框出的就是成功的意思,已经进入admin密码保护区域。
之所以需要找length与众不同的一项就是因为响应报文不一样,只要密码正确和错误返回的不是同一个响应报文,其长度一般都是不同的,所以找出不同的一项,就可以找出正确的一项。
将密码password输入看看结果

DVWA低等级通关指南-超详细版_第14张图片


登录成功
还有一种方法是利用sql注入

DVWA低等级通关指南-超详细版_第15张图片


看代码中的红框圈出来的语句,没有进行任何的防护,因此可以通过精心设计绕过该请求语句
在user中输入1’ or ‘1’=’1 ,password为空,这样可使上面的语句变成
SELECT * FROM `users` WHERE user='admin' or ‘1’=’1’ AND password='';
或者user输入admin’ # ,password为空
这样可使上面的语句变成
SELECT * FROM `users` WHERE user='admin' # ’ AND password='';
注意,在sql中#是注释符号,后面的语句都会被注释掉,也就是语句变成了
SELECT * FROM `users` WHERE user='admin'
看看结果如何

DVWA低等级通关指南-超详细版_第16张图片


2.命令执行
打开页面就是这样,框中让填入IP地址,而本题又是命令执行,看看怎么解决?

DVWA低等级通关指南-超详细版_第17张图片


查看源码

DVWA低等级通关指南-超详细版_第18张图片


看图中红框圈出的语句,可以发现没有任何的保护措施,ip字段如果在IP后面加 ‘|’ 再添加一个命令,则会直接执行该命令。

DVWA低等级通关指南-超详细版_第19张图片


原始语句变成了ping | ls,直接输出该目录下的文件。这样就可以操作服务器中的文件,比如这样

DVWA低等级通关指南-超详细版_第20张图片


比如这样
|echo "(script)alert('xss')(/script)">1.php 圆括号换成尖括号

DVWA低等级通关指南-超详细版_第21张图片


|cat 1.php

DVWA低等级通关指南-超详细版_第22张图片


3.CSRF(跨站请求伪造)
打开时题目是这样的

DVWA低等级通关指南-超详细版_第23张图片


这个链接用来更新某个用户的密码,来看一下源码

DVWA低等级通关指南-超详细版_第24张图片


只要用户访问下图这样的链接,密码就会被直接更改,毫无防备。

v2-b10e362934a6c71c2a7149765e713f28_b.png


可是你要说了,我会这么傻,点击这种这么明显的恶意链接?那么这样呢

DVWA低等级通关指南-超详细版_第25张图片


不要因为我没做一个好看的页面而说太假不看,就说内容吸引不吸引你?尤其是在春招当头,一个阿里学姐学长的面经是多么的宝贵呀,你动心不动心?
点一下看看又没啥,不是吗?

DVWA低等级通关指南-超详细版_第26张图片


哦,出错了,文件未找到,可能是被删除了吧。你也没多想,你也没感觉有啥不对劲,毕竟404你见得多了~
这时,你再想访问DVWA时,发现貌似有点问题

DVWA低等级通关指南-超详细版_第27张图片


明明是这个密码呀,怎么错误了?联想一下刚才我说的跨站请求,大概明白了点什么,那到底发生了什么呢?
首先创建一个file.html,里面写下如下代码

v2-53f16cd183ee1c57084c0863ee74f52b_b.png


攻击者将该链接写入到img标签的src里,访问网页时自动加载图片,也就会自动访问该网址,但是图片已经被设置为不显示了,所以你看不到,你看到的只是404
然后攻击者将这个链接放入到一个你感兴趣的网页,钓鱼执法(再次强调别因为我页面渣吐槽我)

v2-aace3558876aa6dfa39e5d841622efda_b.png


然后你点击链接,链接访问file.html,自动加载图片地址,访问更改的网址,然后达到攻击者目的,你的密码就被修改了

4.文件包含

DVWA低等级通关指南-超详细版_第28张图片


看题目的意思是让我们把url的参数改一改呀,先看一看源码吧

v2-0cb373853fd1520a16d8e5ad6519a876_b.png


如此简洁,真是令人赏心悦目,就是这个有点危险吧~
A.本地文件包含
构造链接192.168.150.131/dvwa/vu

DVWA低等级通关指南-超详细版_第29张图片


返回了绝对路径地址,可以看出来该服务器是linux系统,那么读取绝对路径文件php.ini看出来php.ini的配置信息

DVWA低等级通关指南-超详细版_第30张图片


也可以用相对地址../../php.ini

v2-6b45908e39cb23969ac12c3be062a6e3_b.png


B.远程文件包含
当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。
在本机服务器中上传l.php探针文件,然后利用该漏洞进行远程包含

DVWA低等级通关指南-超详细版_第31张图片


因为虚拟机中的DVWA出现了一些问题,没法远程包含,所以本题的远程包含变成了本地包含虚拟机中的phpinfo.txt
可以看到该页面被远程执行了,这样其实有点明显,很明显看出来这个链接有问题,可以通过url编码进行伪装

DVWA低等级通关指南-超详细版_第32张图片


也可以成功执行,试试hex编码

DVWA低等级通关指南-超详细版_第33张图片


失败了,无伤大雅

5.SQL注入
看题

DVWA低等级通关指南-超详细版_第34张图片


输入用户1

DVWA低等级通关指南-超详细版_第35张图片


用户2

DVWA低等级通关指南-超详细版_第36张图片


输入1’ or ‘1’=’1

DVWA低等级通关指南-超详细版_第37张图片


得到了全部用户名,但是有啥用?
输入1’ order by 3#

v2-2c213f640336b974ceb186d1510f55b7_b.png


输入1’ order by 2#

DVWA低等级通关指南-超详细版_第38张图片


暴库:查询database,1' union select 1,database()# ,可以看出database是dvwa

DVWA低等级通关指南-超详细版_第39张图片


暴表名:查询table_name, 1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='dvwa')#

DVWA低等级通关指南-超详细版_第40张图片


暴字段名:1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='guestbook')#

DVWA低等级通关指南-超详细版_第41张图片


1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users')#

v2-ecaa3bef0d23dd2897ae11d26f309826_b.png


后面显示不下了,字段实在太多了,不过已经够了,看到了user和password字段,接下来爆字段
暴字段值:1' union select 1,(select group_concat(User,Password) from users)#

DVWA低等级通关指南-超详细版_第42张图片


看到用户名是admin,密码是5f4dcc3b5aa765d61d8327deb882cf99
看起来是MD5加密过的数据,在线解密一下

DVWA低等级通关指南-超详细版_第43张图片


嗯,大功告成,这回看看源码,一切进行的有点顺利,并没有对’等特殊符号与函数做相应处理

DVWA低等级通关指南-超详细版_第44张图片


直接把id放到sql语句,没有做任何处理。

6.SQL盲注

DVWA低等级通关指南-超详细版_第45张图片


跟刚才的题差不多,试试刚才的解法有没有问题
暴库:查询database,1' union select 1,database()# ,可以看出database是dvwa

DVWA低等级通关指南-超详细版_第46张图片


暴表名:查询table_name, 1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='dvwa')#

DVWA低等级通关指南-超详细版_第47张图片


暴字段名:1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users')#

DVWA低等级通关指南-超详细版_第48张图片


这次少了很多列啊,咋回事呢?
暴字段值:1' union select 1,(select group_concat(User,Password) from users)#

DVWA低等级通关指南-超详细版_第49张图片


依然可以成功,这是为啥?

DVWA低等级通关指南-超详细版_第50张图片


对比一下两回的源码,只有红框中内容不一样,查询后发现@为错误控制运算符,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。原来只是丢失了回显的错误信息,问题不大

7.文件上传

DVWA低等级通关指南-超详细版_第51张图片


看看源码

DVWA低等级通关指南-超详细版_第52张图片


虽说是上传图片,但是没有对上传文件做任何限制,直接上传个一句话木马。在trojan.php中写入下图代码

v2-5d150784265dbcf661b797e6eb05a9c5_b.png


上传文件

DVWA低等级通关指南-超详细版_第53张图片


文件地址直接返回给我们了,更方便了,菜刀连接一下

DVWA低等级通关指南-超详细版_第54张图片


地址栏为原网页地址+存储后返回的地址,本例中是192.168.150.131/dvwa/vu,记得把#去掉
连接一下

DVWA低等级通关指南-超详细版_第55张图片


已经连接上了,可以看到别的文件夹的内容

DVWA低等级通关指南-超详细版_第56张图片


8.反射型XSS

DVWA低等级通关指南-超详细版_第57张图片


直接alert试试:(script)alert('xss')(/script)把圆括号换成尖括号

DVWA低等级通关指南-超详细版_第58张图片


直接就成功了,没有进行任何的防护

DVWA低等级通关指南-超详细版_第59张图片


看看源码,果然如此

DVWA低等级通关指南-超详细版_第60张图片


9.存储型XSS

DVWA低等级通关指南-超详细版_第61张图片


输入到这里就输入不了了,应该是对长度有限制,可以尝试从下面注入,也可以bp改包绕过长度限制
先试试message注入

DVWA低等级通关指南-超详细版_第62张图片


结果成功了,此时页面中多了一条记录,就是test1,被存储到数据库中,这种xss危害性最大,具有永久性,且可以窃取所有访问该页面的用户的cookie,而不需要像csrf和xss需要欺骗用户进行点击。
以上就是DVWA低等级的通关实例,中级和高级也会出的,不要着急。
路漫漫其修远兮,吾将上下而求索。

你可能感兴趣的:(DVWA低等级通关指南-超详细版)