CTF特训营:技术详解、解题方法与竞赛技巧
上QQ阅读APP看书,第一时间看更新

2.4 Bool盲注

Bool盲注通常是由于开发者将报错信息屏蔽而导致的,但是网页中真和假有着不同的回显,比如为真时返回access,为假时返回false;或者为真时返回正常页面,为假时跳转到错误页面等。

Bool盲注中通常会配套使用一些判断真假的语句来进行判定。常用的发现Bool盲注的方法是在输入点后面添加and 1=1和and 1=2(该Payload应在怀疑是整型注入的情况下使用)。

Bool盲注的原理是如果题目后端拼接了SQL语句,and 1=1为真时不会影响执行结果,但是and 1=2为假,页面则可能会没有正常的回显。

有时候我们可能会遇到将1=1过滤掉的SQL注入点,这时候我们可以通过修改关键字来绕过过滤,比如将关键字修改为不常见的数值(如1352=1352等)。

在字符串型注入的时候我们还需要绕过单引号,将Payload修改为如下格式'and'1'='1和'or'1'='2来闭合单引号。

在Bool盲注中,我们经常使用的函数有以下几种分类,具体如表2-1~表2-3所示。

(1)截取函数

表2-1 截取函数及其说明

(2)转换函数

表2-2 转换函数及其说明

(3)比较函数

表2-3 比较函数及其说明

注意:在盲注的题目及真实的渗透测试中,有时候使用Sqlmap可能会存在误报。原因在于在一些数据返回页面及接口返回数据时可能会存在返回的是随机字符串(如,时间戳或防止CSRF的Token等)导致页面的长度发生变化的情况,这时候我们的工具及自动化检测脚本会出现误报。我们需要冷静地对Payload和返回结果进行分析。