DVWA全级别通关教程

首先选择难度,我们从low开始,如上图所示进行修改 

目录

SQL手工注入

过程:

low

Medium

high

Impossible 

 SQL 盲注

过程:

SQL 工具注入

工具安装过程:

过程: 

low

Medium

High:

暴力破解

过程:

Low

Medium

High

Impossible

命令注入

过程:

Low

Medium

High:

Impossible

文件上传

过程:

Low

Medium

High

Impossible

XSS漏洞

过程:

Low(反射型)

Medium

High 

Impossible

Low(存储型)

Medium

High

Impossible

Low(DOM型)

High

Impossible

文件包含漏洞

过程:

Low

Medium

High

Impossible

CSRF漏洞

过程:

Low

Medium

High

Impossible

 


SQL手工注入

解释(来自百度):SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击

过程:

low

首先在表单中输入1,如上图正常结果显示

输入2如上图正常显示 

查看源代码可知这一关对于表单输入ID没有进行任何过滤 

注入点判断,如上图可知受到单引号闭合影响 

为了方便我们直接把SQL语句中后续语句全部注释掉不执行,在判断语句后加#或者--+即可,全部注释掉就可以不用考虑单双引号闭合的问题

语句1’ or 1=1#可以查出所有ID内容(为什么,可以自己学习逻辑语句的知识) 

找出注入点以及符号问题,然后判断字段(就是正常查询时可以显示用户的几条信息),通过1’ and 1=1 order by 1# 

1’ and 1=1 order by 2# 

1’ and 1=1 order by 3#//如果2是正确的的,3返回错误那么就有2个字段,2即为分界点

找出字段之后(找字段的作用是为了后续报错,看会有几个位置可以报错)

之后结合union联合查询(union的知识学习SQL语句相关知识) 

有两种语句1’ union select 1,2#   -1’ union select 1,2#(至于有什么区别,个人参照上图,只是页面更简洁,目前我也是小白在我目前的学习进度看来这两条语句在后续操作上没有任何区别,可能会有没有被我发现吧,能记住那个用哪个)

走到这一步就可以进行内容信息查询了

把查询语句中2的位置换成你要查询到内容,那么在返回结果上就在你替换掉的数字的位置上即可显示该信息。

顺序首先是数据库名,表名,列名,之后是具体信息(如上图以及下图,如果自己还想查别的信息,可以再去搜索相关的资料)

语句是-1’ union select 1,table_name from information_schema.tables where table_schema=’dvwa’#(dvwa是根据上一个图查出来的数据库名字)

也可以用group_concat把表名拼接起来 -1’ union select 1, group_concat(table_name) from information_schema.tables where table_schema=’dvwa’#

知识点:1.在MYSQL5.0以上版本中存在自带数据库information_schema,他是一个存储所有数据库名,表明,列名的数据库,相当于可以通过查询此库获得相应信息。(没有的话只能靠猜,暴力破解)

2.符号“.”代表下一级: Information_schema.tables:

Information_schema.columns:

查完表名,查列名,语句是-1’ union select  1, group_concat(column_names) from information_schema.columns where table_name=’users’# 

查完列名就可以查自己想查的东西了。

语句是:-1’ union select group_concat(user_id,first_name),group_concat(user,password) from users#

上图就是数据库表中信息了,密码是通过MD5加密,在网上搜索MD5解密工具线上解密就可以了。

一个简单的SQL手工注入就完成了

Medium

下面增加丢丢难度

首先是修改关卡

修改好了之后再次点开SQL注入,有人可能会出现如下图所示的错误(这个有人就是本人,但有的人很幸运没有,别怕,这都是小问题,只是因为你的PHP版本不对,那么怎么修改呢,我没有截图简单告诉你,打开PHPstudy你自然就会,修改完成后就可以打开了) 

正确的界面如下图所示 点开之后是不是吓到了,跟上一关不一样了不是提交表单了,那么我们的注入点怎么找,别慌,这时候就需要那个很牛的工具burpsuite,至于安装什么的,我的一个笔记里写过,你也可以找其他大佬写的文章来解决你的问题,安装完成后,就需要把burp和DVWA连接起来,首先你需要往浏览器导入一个东西(是你运行DVWA的浏览器),然后你需要打开burp,导入证书,设置代理很多东西,这些都设置完成以后很多人如果用127.0.0.1或者localhost这个地址登录的可能会出现依旧抓不到包的情况(因为我就是)这个时候就需要你把地址改成你自己的IP地址(莫?有人会不知道IP地址怎么查吗,那就是网络基础没学好,乖乖去找度娘吧)一切准备就绪,burp成功抓包

数据包中的内容想必大家也不陌生了,如果看不懂那么请你去认真学习HTTP,在数据包中会找到我们提交的ID,这里的ID的位置就是我们可以利用的注入位置,之后的步骤就跟上面一模一样,以下就是简单的演示。 

有人会在这一步可能会遇到这个问题,那么查看源代码会发现了一个转移函数,这个经典的函数想必大家略有耳闻,那么采用十六进制等绕过,把需要用到单双引号的词,用十六进制(在网上查)

 以上,就是中级SQL手工注入的全部步骤。

high

学到这儿了,相比对注入语句已经很熟悉了,那么我们开始下一关。

同之前一样,修改,进入。

跳转界面,在另一个界面输入注入语句。 

我们同样能查到内容,查看源代码会发现有limit限制只能输出一条,我们在这里用#注释掉后续内容,那么这一关的意义到底何在,主要是为了防止SQLmap注入,至于SQLmap的使用后续再说明。

Impossible 

分析源代码

可以看到,Impossible级别的代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入,同时只有返回的查询结果数量为一时,才会成功输出,这样就有效预防了“脱裤”,Anti-CSRFtoken机制的加入了进一步提高了安全性。

参考内容:新手指南:DVWA-1.9全级别教程之SQL Injection - linuxsec - 博客园

 SQL 盲注

与一般注入的区别是,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高,目前网络上现存的SQL注入漏洞大多是SQL盲注。

基于布尔的盲注(怎么方便的理解这个概念呢,就是他只会告诉你是或不是,比如你猜版本是什么他只会告诉你是或不是这个版本),基于时间的盲注以及基于报错的盲注,在此只演示前两个。

过程:

(过程怎么说呢,只说明一下思路因为主要是猜,然后具体名字就是无数遍的二分法等算法猜)

一开始的步骤肯定驾轻就熟,直接开讲。思路上面已经很清楚了,那么首先先确定是字符型还是数字型注入。

如果不明白怎么去判断请参考:https://blog.csdn.net/qq_44798520/article/details/122453649

从上面看即使添加错误的逻辑语句仍然是正确的返回,那么开始猜解字符型。(至于怎么猜,把引号一个位置一个位置的放,总能猜出来)

以上就可以确定它是字符型。

确定完注入类型,就要开始猜解数据库名字

语句是1’ and length(database())=1#   

1’ and length(database())=2#   

1’ and length(database())=3#   

1’ and length(database())=4#  可以知道数据库名的长度是4,之前我们知道数据库名字是“dvwa”,所以长度是4(不要问为什么我知道,因为手工注入那一关就知道了,这里只是验证一下)

知道了长度,就得准备猜名字了,最麻烦的部分来了。

语句:1’ and ascii(substr(database(),1,1)>97#

那么上面这个句子什么意思,就是为了猜数据库名字,ASCII码想必大家都不陌生,不清楚的同学可以去查度娘,一句一句试。好了剩下的步骤想必大家也都明白了,盲注就是靠试。

上面讲述的是基于布尔的盲注,接下来简单说一下基于时间的盲注(同样是小白,造诣也不高)

结果不会延迟,说明不是数字型 

结果延迟五秒说明是字符型

接下来几个难度跟之前都是一样的,在此就不再说明(因为是真的懒,要猜的话得很久)

后面利用工具,没错就是著名的sqlmap工具给大家进行说明。

SQL 工具注入

工具安装过程:

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值