SQL注入中二阶注入原理
1.sql注入中二阶注入原理?.
二阶注入是用户输入被存储后(如数据库或文件),再次被读取并输入到sql查询语句中,从而导致注入攻击。
1.插入恶意数据,进行数据库插入数据时,对特殊字符进行了转义处理,在写入数据库时保留了原来的数据。
2.引用恶意数据,开发者默认存入数据库的数据都是安全的,进行查询时,之间从数据库中读取恶意数据,没有校验
对输入进行了预处理或参数化查询,不直接将恶意代码插入到用户输入的地方,而是将恶意代码插入到数据库其他位置。
- SQL注入绕过
1、注释符过滤绕过:-- # //
2、大小写、双写绕过
3、内联注释绕过
4、编码绕过:引号如果被过滤可以使用16进制绕过、ascii编码、
5、空格过滤绕过:可以替代空格的有// 、()、`、tap
6、符合进行过滤:and=&&、or=||、xor=|、not=!
7、过滤等号(=)绕过:like、rlike模糊匹配
8、过滤大于号小于号:greatest(n1、n2、n3...)返回n中做大值;least(n1、n2、n3...)返回最小值
9、过滤引号绕过:编码、宽字节注入
10、过滤逗号绕过:from for、 - SQL注入防御
1、预编译
2、检查数据类型
3、设置黑名单
4、使用参数化查询
5、对用户输入进行严格过滤和转义
6、为数据库分配最小的权限,限制其对数据库的操作
7、使用web应用防火墙、云端防护等
8、定期安全审计、更新数据库配置
9、自定义错误页面