SQL注入实战:绕过操作

一:绕过操作

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绕过

SQL注入实战:绕过操作_第1张图片

SQL注入实战:绕过操作_第2张图片

用联合查询:?id=1' union select 1,2,'3 (闭合单引号)登入成功

SQL注入实战:绕过操作_第3张图片

?id=1改成?id=-1

SQL注入实战:绕过操作_第4张图片

绕过去除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注入实战:绕过操作_第5张图片

SQL注入实战:绕过操作_第6张图片

SQL注入实战:绕过操作_第7张图片

SQL注入实战:绕过操作_第8张图片

绕过去除空格的sql注入

绕过姿态

编码绕过:hex,urlencode

空格URL编码%20

%09TAB键(水平)

%0a新建一行

%0c新的一页

%0d return功能

%0bTAB键(垂直)

演示:sqli-labs less-26

SQL注入实战:绕过操作_第9张图片

SQL注入实战:绕过操作_第10张图片

绕过去除union和select的sql注入

演示:sqli-labs less-27

输入下面语句(大小写进行绕过)

SQL注入实战:绕过操作_第11张图片

3、SQL注入解决方案

1、对所有可能来自用户输入的数据进行严格的检查

2、数据库配置最小权限原则

3、对进入数据库的特殊字符进行转义处理,或者编码转化

4、数据长度严格规定

5、网站的每个数据层的编码统一,建议全部使用utf-8编码

6、严格限制网站用户的数据库的操作权限

7、避免网站显示sql错误信息

8、网站发布前,又建议使用专业的sql注入检测工具检测

你可能感兴趣的:(sql,数据库)