07 漏洞发现:识别 SQL 盲注

上一篇文章我们了解了SQL注入漏洞的工作原理。下面外面看另外一种,这类不会先日任何错误信息,也就是了解盲注的识别方法。

实践

  1. 登入DVWA,跳转到SQL Injection (Blind)页面
  2. 页面看起来和之前的差不多,现在在文本框输入 1,然后点击 Submit。
  3. 然后,我们再输入 1',测试下:


    07 漏洞发现:识别 SQL 盲注_第1张图片
    Paste_Image.png

    然而并没有报错信息,也没有查询结果,其中必有蹊跷。

  4. 紧接着,我们换个测试数据,再来一次,这次输入 1'' :


    07 漏洞发现:识别 SQL 盲注_第2张图片
    Paste_Image.png

    07 漏洞发现:识别 SQL 盲注_第3张图片
    Paste_Image.png
  5. 下面我们试着探究一下,如果注入的代码使查询条件一直为False的情况,使用 1' and '1'='2 作为User ID:


    07 漏洞发现:识别 SQL 盲注_第4张图片
    恒为False

    '1' 永远不等于 '2',因此查询条件恒为False,不会查出任何结果。

  6. 现在,我们,我们尝试另一个注入代码,构造一个永远为真的查询条件 1' and '1'='1 :


    07 漏洞发现:识别 SQL 盲注_第5张图片
    永远为True

通过以上步骤,就说明这里有一个盲注点。

总结

错误注入和盲注都是服务器端的缺陷,应用在使用输入参数构造查询语句前没有对数据进行清洗。两者的区别在于注入点的检测和利用。基于错误的注入,我们通过返回的错误信息甄别查询的类型、表、字段等信息。对于盲注来讲,我们通过,SQL注入代码不断试探来获取信息,例如:"' and name like 'a%",意思是说以a开头的用户名存在吗?如果返回结果是否定的,我们就再去尝试b开头的,如果存在,我们就继续往后尝试第二个字符:"' and name like 'ba%"。因此盲注相比基于错误信息的方式更耗时一些。

参考资料

  • https://www.owasp.org/index.php/Blind_SQL_Injection
  • https://www.sans.org/reading-room/whitepapers/securecode/sql-injection-modes-attack-defence-matters-23

你可能感兴趣的:(07 漏洞发现:识别 SQL 盲注)