布尔与延时盲注的区别
首先,使用二者的前提是,在参数错误的情况下(例如:1’)不会返回报错信息
布尔盲注:在正确与错误参数下,页面返回的信息有所不同
延时盲注:不论输入正确或错误参数,页面没有明显区别
时间盲注更像是布尔盲注的升级,布尔盲注的时候比较直观的变化
所以这个时候基于时间的盲注,也就是在基于布尔的盲注上结合if判断和sleep()或benchmark()函数来得到一个时间上的变换延迟的参照,也就可以让我们进行一些判断
盲注常使用的函数
- length():确定字符长度
- ascii():确定某个字符是什么
- substr()/mid():截取字符串
- count():计算数量
- sleep()/ bentchmark():延时
- if():判断语句
盲注的大体流程
数据库:
- 确定数据库名字长度
length()
- 确定数据库名字
ascii()与substr()
表名:
- 确定数据库中几张表
count(table_name)
- 确定第一张表名字长度
length()
- 确定第一张表名字
ascii()与substr()
- 确定其他表名字长度与表名
ascii()与substr()
字段名:
- 确定第一张表中共有几个字段
count(column_name)
- 确定第一个字段名字的长度
length()
- 确定第一个字段的名字
ascii()与substr()
10.确定第一张表其他字段的名字以及其他表字段名字ascii()与substr()
字段值:
- 确定某一字段(例如为uname)中共有几条数据
conut(uname)
- 确定第一条数据的长度
length()
- 确定第一条数据的内容
ascii()与substr()
- 确定其他数据的内容
ascii()与substr()
盲注案例(sqli-labs-less-15)
- 获取数据库名字长度
盲注,通过测试发现单引号闭合
得知数据库名称长度为8
uname=admin&passwd=admin' and 1=if((length(database())=8),1,2)--+&submit=Submit
- 获取数据库名字
通过ascii和substr可以推算出数据库名字为security
uname=admin&passwd=admin' and 1=if((ascii(substr(