目录
绕过手法
前端代码绕过
后端代码绕过
各种字段进行验证 union
大小写绕过
双写逃过
强制类型判断
引号特殊编码处理。
内联注释绕过
注释符绕过
or/and绕过
空格绕过
防御SQL注入的方法
使用预编译语句
使用存储过程
检查数据类型
绕过手法
前端代码绕过
- Js逆向 绕过 加解密绕过 学习加解密 加密格式验证
- BP 挂载很多插件
后端代码绕过
-
各种字段进行验证 union
大小写绕过
- 绕过防御后一样能执行 大小写混合绕过
- sql语句对一些关键词不区分大小写,如果网站代码没有进行大小写检查可以使用
UniOn select * from user
-
双写逃过
- 网站代码找到关键词后删除,可以通过双写构造删除后符合语法的sql语句
selselectect * from user
-
强制类型判断
-
引号特殊编码处理。
-
内联注释绕过
- mysql扩展功能,在/*后加惊叹号,注释中的语句会被执行
and /*!select * from user*/
-
注释符绕过
- 注释符不影响语句的连接
sel/**/ect * from user
-
or/and绕过
- 使用逻辑符号代替:and = &&, or = ||
- 绕过剔除and和or的SQL注入
- 1、Mysql中的大小写不敏感,大写与小写一样。
- 2、Mysql 中的十六进制与URL编码。
- 3、符号和关键字替换 and – &&、or – ||。
- 4、内联注释与多行注释 /! 内联注释/ /多行注释/。
select * from emp where sal > 500 && sal < 3000;
-
空格绕过
有的网站过滤了空格,可以尝试使用
%0a、%b、%0c、%0d、%09、%a0
/**/、()
-----------------------------------------------------------select * from/**/emp where (sal) > 500 && sal < 3000;select * from emp where sal > 500 and sal < 3000;
防御SQL注入的方法
使用预编译语句
- 绑定变量,攻击者无法改变SQL的结构。
- 不同的编程语言Java、Php有不同的语法,就不做展示了。
- 在网络安全-php安全知识点中提到了使用pdo来防御。
使用存储过程
- 使用安全的存储过程对抗SQL注入,由于存储过程中也可能存在SQL注入问题,应尽量避免使用动态SQL语句。
检查数据类型
- 例如
- 需要输入的是整型,那么,可以判断用户的输入,如果包含非整型,例如,字符串"AND"、“BENCHMARK”等,则不运行sql语句。其他类型,例如,邮箱等可以通过使用正则表达式来进行判断。
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!