绕过 过滤
注释符绕过
MYSQL中的注释符
- 单行注释:–空格 或 #
- 多行注释:/* 多行注释的内容*/
可以利用 or ‘1’ = '1 闭合单引号
剔除了or和and的绕过
- MySQL去大小写不敏感
- MySQL支持十六进制
- and --> && or–> ||
- 内联注释 (内联中的语句会当作sql语句执行) /*! 内联注释*/
策略
- 大小写变形
- 使用注释的方式 an/**/d
- 双写绕过 anandd
- 符号替换 and --> && or–> ||
去除空格的绕过
使用URL编码 空格的URL编码为%20 %09(tab键)
使用SQLmap
sqlmap -u “URL” --hex --dbs --batch
- –hex 对payload进行16进制编码
- –batch 默认选项
剔除union和select的绕过
大小写绕过 双写绕过
防范措施
代码层面
- 对输入进行严格的转义和过滤
- 使用预处理和参数化
- 白名单
- 黑名单
- 规范输出
- 敏感字符过滤
网络层面
- 通过WAF设备
- 云端防护