漏洞概述
SQL盲注是指不能根据报错和回显来判断是否存在SQL注入时,攻击人员通过提交逻辑条件来观察响应结果来判断是否存在SQL注入的方式
测试工具
firefox浏览器,burp suite,sqlmap
测试方法
LOW级别
-
设置DVWA安全级别为LOW
-
启动burpsuite并开启代理
08.01.png -
设置firefox浏览器代理为127.0.0.1:8080
08.02.png -
关闭burpsuite拦截
08.03.png -
使用firefox浏览器发起查询请求
08.04.png -
使用burpsuite进行SQL注入攻击
08.05.png -
使用Decoder模块生成payload
08.06.png分别对以下数据进行URL数据编码payload
1 or 1=1
1 and 1=2
1' or '1'='1
1' and '1'='2
-
使用重放模块进行SQL注入测试
08.07.png分别将提交数据修改为生成的四个payload进行请求操作,并发送到比较模块
-
使用比较模块分别对整数类型/字符串类型逻辑and和or之间的响应结果进行比较
08.08.png -
分析结果
08.09.png针对字符串类型比较结果中,逻辑or请求的结果显示数据存在,逻辑and请求的结果显示数据不存在,从而判断存在SQL注入
-
使用sqlmap进行测试
08.10.png 08.11.png -
代码分析
08.12.png说明:
查询条件直接拼写提交数据到SQL语句中,此处存在字符串类型注入,针对查询结果进行抑制错误输出并根据查下结果数量控制显示结果,此处无法根据查询结果数量和错误输出进行是否存在SQL判断,需要采用盲注方式
MEDIUM级别
-
设置DVWA安全级别为Medium
-
启动burpsuite并开启代理
08.13.png -
设置firefox浏览器代理为127.0.0.1:8080
08.14.png -
关闭burpsuite拦截
08.15.png -
使用firefox浏览器发起查询请求
08.16.png -
使用burpsuite进行SQL注入攻击
08.17.png -
使用重放模块进行SQL注入测试
08.18.png分别将提交数据修改为以下的四个payload进行请求操作,并发送到比较模块
1 or 1=1
1 and 1=2
1' or '1'='1
1' and '1'='2
-
使用比较模块分别对整数类型/字符串类型逻辑and和or之间的响应结果进行比较
08.19.png -
分析结果
08.20.png针对整数类型比较结果中,逻辑or请求的结果显示数据存在,逻辑and请求的结果显示数据不存在,从而判断存在SQL注入
-
使用sqlmap进行测试
08.21.png 08.22.png -
代码分析
08.23.png说明:
查询条件直接拼写提交数据到SQL语句中,此处存在字符串类型注入,针对查询结果进行抑制错误输出并根据查下结果数量控制显示结果,此处无法根据查询结果数量和错误输出进行是否存在SQL判断,需要采用盲注方式
HIGH级别
-
设置DVWA安全级别为High
-
启动burpsuite并开启代理
08.24.png -
设置firefox浏览器代理为127.0.0.1:8080
08.25.png -
关闭burpsuite拦截
08.26.png -
使用firefox浏览器发起查询请求
08.27.png点击submit按钮提交数据服务器将提交数据通过set-cookie存储到浏览器中,刷新页面查询id通过cookie再次提交到服务器
-
使用burpsuite进行SQL注入攻击
08.28.png -
使用重放模块进行SQL注入测试
08.29.png分别将cookie提交数据修改为以下的四个payload进行请求操作,并发送到比较模块
1 or 1=1
1 and 1=2
1' or '1'='1
1' and '1'='2
-
使用比较模块分别对整数类型/字符串类型逻辑and和or之间的响应结果进行比较
08.30.png -
分析结果
08.31.png针对整数类型比较结果中,逻辑or请求的结果显示数据存在,逻辑and请求的结果显示数据不存在,从而判断存在SQL注入
-
使用sqlmap进行测试
08.32.png 08.33.png -
代码分析
08.34.png说明:
查询条件直接拼写从cookie中提交数据到限制查询结果SQL语句中,此处存在字符串类型注入,针对查询结果进行抑制错误输出并根据查下结果数量控制显示结果,此处无法根据查询结果数量和错误输出进行是否存在SQL判断,需要采用盲注方式
修复建议
-
使用预处理方式将数据和操作分离(在SQL中使用?占位数据)
-
对数据严格进行类型和格式检查(url,post data,cookie等用户可以控制的数据)
-
使用安全函数对数据进行转义
-
避免web服务器启动和数据库操作用户权限过高
网友评论