一:绕过操作
1、常用绕过方式
大小写绕过:
通过修改关键字内字母大小写来绕过过滤措施。例如:AnD1=1Select* from ** oRdEr by 1
双写绕过:
使用双写绕过。因为在过滤过程中只进行了一次替换。就是将关键字替换为对应的空。
比如 union在程序员处理时被替换为空,那需要我们可以尝试把union改写为Ununionion,这样红
色部分替换为空,则剩下的依然为union还可以结合大小写过滤一起使用
编码绕过:
可以利用网络中的开源的URL在线编码,绕过SQL注入的过滤机制。更好用的 bp 别忘记
内联注释绕过:
在Mysql中内联注释中的内容可以被当作SOL语句执行。
2、绕过操作实操
绕过去除注释符的sql注入
preg replace(mixed $pattern, mixed $replacement, mixed$subject):执行-个正则表达式的搜索和替换。
$pattern:要搜索的模式,可以是字符串或一个字符串数组
$replacement:用于替换的字符串或字符串数组。
$subject:要搜索替换的目标字符串或字符串数组。
a、绕过姿态
利用or '1'='1闭合单引号或者||‘1
或者联合查询
演示:sqli-labs less-23
用or绕过
用联合查询:?id=1' union select 1,2,'3 (闭合单引号)登入成功
?id=1改成?id=-1
绕过去除and和or的sql注入
绕过姿态(利用这些进行绕过)
1、大小写变形,Or,OR,oR,And,ANd,aND等-代码中大小写不敏感都剔除
2、在这两个敏感词中添加注释,例如:a/**/nd 双写绕过oorr
3、利用符号代替--and --&& --or--|| 等
演示:sqli-labs less-25
?id=1 Anandd 1=1或者?id=1 && 1=1或者?id=-1 oorr 1=1
绕过去除空格的sql注入
绕过姿态
编码绕过:hex,urlencode
空格URL编码%20
%09TAB键(水平)
%0a新建一行
%0c新的一页
%0d return功能
%0bTAB键(垂直)
演示:sqli-labs less-26
绕过去除union和select的sql注入
演示:sqli-labs less-27
输入下面语句(大小写进行绕过)
3、SQL注入解决方案
1、对所有可能来自用户输入的数据进行严格的检查
2、数据库配置最小权限原则
3、对进入数据库的特殊字符进行转义处理,或者编码转化
4、数据长度严格规定
5、网站的每个数据层的编码统一,建议全部使用utf-8编码
6、严格限制网站用户的数据库的操作权限
7、避免网站显示sql错误信息
8、网站发布前,又建议使用专业的sql注入检测工具检测