DVWA —— SQL Injection SQL 注入

目录

漏洞原理

Low

渗透思路

无防护直接注入

Medium

渗透思路

逻辑表达式绕过引号转义

源码对比

Low 源码

Medium 源码

对比小结

High

渗透思路

SQL注入请求

注入结果获得请求

源码对比

Medium 源码

High 源码

对比小结

Impossible

源码对比

high 源码

Impossible 源码

对比小结

绕过

防御


漏洞原理

Web程序代码中对于用户提交的参数未做过滤就直接放到SQL语句中执行,导致参数中的特殊字符打破了SQL语句原有逻辑,黑客可以利用该漏洞执行任意SQL语句,如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。

Low

渗透思路

无防护直接注入

9'union select user(),database()-- #

Medium

渗透思路

注入参数类型为数字,而且 ' 会被转义

逻辑表达式绕过引号转义

burpsuit 抓包 paylaod 修改如下

1+or+1=1--+

源码对比

Low 源码

Medium 源码

对比小结

与 Low 源码比较,Medium增加了特殊字符转义的函数 mysqli_real_escape_string

High

渗透思路

和 Low 没什么太大区别,只是 SQL 注入和获得结果需要分两次请求

SQL注入请求

1'or+1=1--+

注入结果获得请求

再请求 /vulnerabilities/sqli/ 路径获得结果

源码对比

Medium 源码

High 源码

对比小结

High 比 Medium 的防护措施更少,唯一不同的是 High 对返回结果做了限制,只有一条,但实际 SQL 注入中可以用注释符将 limit 限制去掉

Impossible

源码对比

high 源码

Impossible 源码

对比小结

与 High 相比,Impossible 的措施更多更有效:

  1. 校验请求 CSRF Token
  2. 校验参数类型是否为数字
  3. 预编译参数化查询

绕过

  1. 各种编码绕过
    1. URL编码
    2. 十六进制
    3. ASCII
  2. 字母大小写转换绕过
  3. 空格过滤绕过
    1. 09,0A,0B,0C,0D,A0,20,+
    2. 注释
  4. 关键字双写
  5. 内联注释绕过
  6. 请求方式差异规则松懈性绕过
    1. GET,POST,HEAD
    2. http,https
  7. 关键字加 % 绕过
  8. %00截断
  9. 利用分块编码传输绕过
  10. 冷门函数/字符/运算符绕过
  11. 参数污染绕过
  12. HTTP 走私请求绕过

防御

  1. 对输入参数中特殊字符和关键字进行过滤、转义
  2. 后端编程采用 SQL 预编译
  3. 引入安全库函数
  4. 添加 WAF 防护
  5. 规范前后端编码字符集
  6. 普通用户与系统管理员用户的权限要有严格区分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值