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

chenjingjiu.cn

1.Brute Force

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

查看一下源代码

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

Ctrl+I进入intruder模块

先clear ,然后选中要爆破栏位,点击add

设置Payloads

选择字典

读取以后

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

点击右上角的Start attack!

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

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

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

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

登录成功

还有一种方法是利用sql注入

看代码中的红框圈出来的语句,没有进行任何的防护,因此可以通过精心设计绕过该请求语句在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

看看结果如何

2.命令执行

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

查看源码

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

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

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

|cat 1.php

3.CSRF(跨站请求伪造)

打开时题目是这样的

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

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

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

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

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

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

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

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

4.文件包含

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

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

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

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

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

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

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

失败了,无伤大雅

5.SQL注入

看题

输入用户1

用户2

输入1』 or 『1』=』1

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

输入1』 order by 2#

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

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

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

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

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

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

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

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

6.SQL盲注

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

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

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

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

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

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

7.文件上传

看看源码

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

上传文件

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

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

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

8.反射型XSS

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

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

看看源码,果然如此

9.存储型XSS

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

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