无法看到结果,但是执行
一,布尔盲注(bool)页面仅反映是否报错两种情况。
二时间盲注,无论输出内容对错,都显示一样的内容
但这两种情况均不回显具体内容
常用盲注函数
一,length()判断长度
select length ('aaa')返回值为3
二,ascii()ASCII码,囊括常见的数字,字母,字符等共126个
select ascii('a')返回结果为97
三,subetr()分割函数,括号内需要填三组数据,第一组为要分割的数据,第二组为从哪里开始,第三组为分多少位。
select substr(‘abcd’,‘1’,‘1’)返回值为1。它是指从abcd中第一个字母开始分割一个出来。
三, if(),括号内同样是写三组数据,第一个为条件,第二个是条件为Ture就执行此函数,这里第二个是判断为false就执行此函数。
if(2>1,sleep(2),1)若2>1停两秒后输出结果,若不大于返回值1。
实战演练
一,判断是否有注入漏洞。
二,找到何处注入能够被执行。
and 1=1,能够被执行,且,and 1=2,不能被执行。
三,实行注入
1,得到库名,首先需要得到数据库库名的长度,使用每个字母分别猜,此处使用二分法猜长度。
?id=1'and length (database())>5 --+
判断库名是否大于5,以此类推得到长度。
2,猜库名字母。
?id=1'and substr (database(), 1,1)=a--+
判断第一位是否为a,以此类推得到库名。
同时也可以使用ASCII码批量使用二分法进行判断。
?id=1'and ascii(substr( database()①,1))--+
①是算第几位的结果
往后推表名字段名原理同上,都需要从猜长度开始逐步递进猜表名字段名。
同时也可使用sqlmap和dp,爆破直接得到结果。
二,时间盲注
?id=1'and if(length (database ())>7,sleep (10),sleep(2))--+
若库名字母数大于七停十秒,若否停两秒?
它的原理是将时间锚柱转化为布尔函数,然后使用二分法得出结果,与布尔盲注入大同小异。
今日学习笔记
最新推荐文章于 2024-07-25 22:24:14 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)