07 漏洞发现:识别 SQL 盲注
2016-08-30 本文已影响127人
半个王国
上一篇文章我们了解了SQL注入漏洞的工作原理。下面外面看另外一种,这类不会先日任何错误信息,也就是了解盲注的识别方法。
实践
- 登入DVWA,跳转到SQL Injection (Blind)页面
- 页面看起来和之前的差不多,现在在文本框输入 1,然后点击 Submit。
-
然后,我们再输入 1',测试下:
Paste_Image.png
然而并没有报错信息,也没有查询结果,其中必有蹊跷。
-
紧接着,我们换个测试数据,再来一次,这次输入 1'' :
Paste_Image.png
Paste_Image.png -
下面我们试着探究一下,如果注入的代码使查询条件一直为False的情况,使用 1' and '1'='2 作为User ID:
恒为False
'1' 永远不等于 '2',因此查询条件恒为False,不会查出任何结果。
-
现在,我们,我们尝试另一个注入代码,构造一个永远为真的查询条件 1' and '1'='1 :
永远为True
通过以上步骤,就说明这里有一个盲注点。
总结
错误注入和盲注都是服务器端的缺陷,应用在使用输入参数构造查询语句前没有对数据进行清洗。两者的区别在于注入点的检测和利用。基于错误的注入,我们通过返回的错误信息甄别查询的类型、表、字段等信息。对于盲注来讲,我们通过,SQL注入代码不断试探来获取信息,例如:"' and name like 'a%",意思是说以a开头的用户名存在吗?如果返回结果是否定的,我们就再去尝试b开头的,如果存在,我们就继续往后尝试第二个字符:"' and name like 'ba%"。因此盲注相比基于错误信息的方式更耗时一些。