SQL注入绕过与防御

常见的绕过思路

在真实环境中,有时我们会遇见一些过滤、函数禁用等情况,这个时候,如果想要进行注入,我们就要掌握一些基本的绕过方式:

  • 等价替换: ||------or 、&&------and 、 |--------xor
  • 双写绕过 :aandnd (and -1=-1 、 and -1=-2)
  • 大小写绕过:oorR
  • URL、16进制等编码绕过(也可以是url的二次编码)
  • 内敛注释绕过
  • 参数污染
  • 分块传输
  • 模糊测试(利用字典来进行测试,看有那些被过滤)等
  • 脏数据(影响长度)

过滤注释符的情况下:使用union来进行union语句拼接结合xml报错来进行数据的注出;
遇到and/or过滤的情况下:双写/大小写/等价替换;

  • 遇到空格过滤时:等价替换:
    %09-----tab键(水平) 、 %0a -----新建一行,回车 、 %0b------tab键(垂直) 、 %0c------新的一页 、 %0d-------return功能 、 %a0--------空格%00------空字节 、 //-------注释代替空格 、 /!**/-------内敛注释 、 ()---------包裹参数 、 ``-----反引号包裹参数

其他绕过方式

  • 绕过单引号过滤:16进制编码、宽字节方式
  • 绕过order by过滤:使用union select 1,2,3
  • 绕过union select 过滤:union distinct select
  • 绕过=号过滤:like、rlike
  • 绕过select后的空格过滤:可以使用单引号将select后面的参数包裹
  • union distinct select ‘1’,2,3
  • union distinct (select ‘1’,2,3)
  • 绕过from+空格的过滤:from{x 表名}
  • 绕过><:in 、between and
  • 绕过逗号过滤:join、from pos for len (代表从pos个开始读取len长度的字串)绕过union select * from (select 1)a join (select 2)b join(select 3)c join(select 4)d 等价与 union select 1,2,3,4 from pos for len

在这里插入图片描述

  • 绕过sleep函数:benchmark函数替换,benchmark可以测试某些特定操作的执行速度,参数是需要执行的次数和表达式,第一个参数是次数,第二个是表达式:benchmark(1000000000,1)

防御思路

  • 代码防御:

黑名单
白名单
字符过滤
规范输出

  • 配置层

开启GPC(magic_quotes_gpc)
使用UTF-8

  • 物理层

WAF
云防护
IPS

  • WAF

软WAF:主机预先安装防护软件,对访问的请求进行过滤、判断,再去进行响应请求;
硬WAF:独立的防护设备,流量指向主机,先经过设备过滤。判断。拦截,再去响应请求;
云WAF:在云端的WAF,请求先经过云端服务器在指向主机;

  • WAF的作用

检测异常请求以及协议,拒绝非法HTTP请求。
白名单:允许白名单的ip、用户输入等,用来稳定web应用;
黑名单过滤非法ip,输入等,适合用来处理已知的问题;
对状态管理进行会话保护;
cookies的保护;
信息泄露的保护;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值