3-7SQL注入网站实例第三步:攻击类型与攻击策略

我们已经完成了对注入点进行测试与发现,充分的发挥注入点,这个是SQL注入的本质,那需要发挥到什么程度,需要我们对他的特点进行分析

我们接下来,学习一下sql注入的类型,根据不同的类型,他的攻击策略是怎么样的,这是我们本篇文章,所要探讨的内容

1.SQL注入类型

按输出机制分类:

盲注:输出数据库的内容在网页中没有显示,只能进行逻辑判断,真或者假

盲注就是我们看不到,我们只能猜测

报错注入:充分利用程序、数据库报错的帮助,傻傻地告诉我们所有信息

我们在第二部分中,有说过一个自爆家底,是如何把库表,甚至用户名和密码暴露给我们的

显注:注入SQL查询语句的内容在网页中有显示。

就是我们看得见

其它:email,ftp,samba等协议

当然这是漏洞渗透的攻击,我们在sql注入里面不会涉及这种协议

接下来,我们将通过页面给大家简单的演示

2.盲注

特点是我们看不到,我们看不到结果

1.在网页中没有找到或者暂时没有找到输出的地方

2.确认输入变量可以执行逻辑判断,只得到对或者错,真或者假,两种结果

我们打开我们示例的一个网页

在这里插入图片描述

我们在注入点的测试和发现中,已经知道在这里是个注入点,我们在这里输入个真,and true,我们执行的结果应该是不变的

在这里插入图片描述

我们看到仍然是两页,没有变化,如果输入and false,我们看一下

在这里插入图片描述

我们看到网页中显示是不正常的,测试为空,所以这个就是我们暂时没有找到显示位的地方,所以这里我们就需要判断真或者假

只要真,这里显示的结果就是不变的,只要是假,显示的结果网页就是空的,但是这个框架还在,所以就利用这个特点,我们就可以判断到底是真还是假,来判断些内容出来

比如,我们需要对用户名的长度是多少,如果是大于10为真,那显示结果就正常,and (select length(user()))>10

在这里插入图片描述

那么这个结果,我们在第二部分中,如何猜测用户名已经得到一部分的接触,这是如何猜测用户,同时我们还可以猜测数据库是什么,比如database,我们先看他的长度为多少,我们看他是否大于10,and (select length(database()))>10

在这里插入图片描述

我们看到他肯定不是大于10的,那我们大于8看看,and (select length(database()))>=8

在这里插入图片描述

我们看到大于等于8是正确的,那就说明他在8、9、10之间,那我们试一下等于8,and (select length(database()))=8

在这里插入图片描述

这个时候,就说明他就是等于8,我们知道数据库有8个字符,那它第一位是什么呢,我们取一位,猜测一下,比如说,他等于z,我们看它是不是对的,and (select left(database(),1))=‘z’

在这里插入图片描述

我们看到数据库的最后一个字母叫z,我们用subtring的办法,从第二位取一位,我们取a,and (select substring(database(),2,1))=‘a’

在这里插入图片描述

我们会发现第二个字母是a,这样子,我们推测下去,这种就是盲注的猜测

类似于这种,我们只能执行逻辑判断,只能得到对或者错,特点就是盲目的,我们看不到,有时候,我们输入比较多的结果进行测试,才得出来

3.盲注困难,有时候需要借助工具进行盲注攻击,但花费时间也较长,需要有足够的耐心,才可以

3.报错注入

充分利用数据库报错和程序报错所提供的信息,让数据库引擎和程序,傻傻地,乖乖地把所需要的信息都暴露出来

select count(*),concat((select (select (SELECT schema_name FROM information_schema.schemata limit 0,1)) as a_col from information_schema.tables limit 0,1),floor(rand(0)*2)) x_col from information_schema.tables group by x_col

也就是我们前面所学到的自爆家底函数,这是个示例的方法,因为我们这边没有报错的地方,就不给大家演示报错注入的具体示例了

4.显注示例

在网页中寻找到可以把注入信息显示的位置,或者把注入者的信息替换为程序正常的信息(通常,我们叫第三者上位)

第三者上位的信息,需要我们通过union的办法显示出来

union需要在注入点union,union的结果是几个字符,一直union下去,一直得到,我们程序注入到底需要多少字段,我们去判断他,union select 1,2,3

在这里插入图片描述

我们看到这里是空的,显然他不是三个字段,那这就需要我们有一定的耐心,去尝试到底有多少字段,我们这里就输入,其实是我们进行足够的输入,当然,我们也会使用工具,给大家演示一下,是如何使用工具,来加快我们之间的测试,这里需要我们不断的测试,一直测试到36个,到时候我们看一下,后面我们输入–,输入两个–,是为了这个目标,把后面的注释掉,注释掉,我们看一下结果,union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 –

在这里插入图片描述

我们看到结果已经出来了,说明上面处理的字段数,有36个字段,36个字段对于我们目标来说,目标并不是得到多少个字符,这当然对于我们来说,意义并不大

我们需要意义大的是上位者逻辑,第三者上位,就是到前面去,先给他一个空集逻辑,0=9,0=9,就等于空集逻辑,那么显示的就是我们的逻辑,

and 0=9 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 –

在这里插入图片描述

这个时候得到的,就是我们发现第10位就是第三者上位点,接下来,我们就要使用第十位进行充分的发挥,这就是显注所要完成的任务

因此,显注直接得到明文信息,不需要猜测,获得敏感信息非常容易和快速,通常,我们sql注入最重要的,就是找到显注的位置,这是第三者上位点

5.小结

1.SQL注入类型与特点

2.盲注

3.错注

4.显注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值