一、SQL注入的分类
1.1 基于服务器接收到的响应
报错的SQL注入
联合查询注入
堆查询注入
SQL盲注
基于布尔SQL盲注
基于时间的SQL盲注
基于报错的SQL盲注
1.2 注入的数据类型
基于字符串
数字或整数
1.3 基于程度和顺序
一阶注入
注入的语句直接作用Web,然后产生结果,短暂的,结果显示后,攻击结束。
二阶注入
注入的语句存储于数据库,在对该数据操作时,会产生攻击,攻击是持久的。
1.4 基于注入点
基于GET型注入
基于POST型注入
基于HTTP数据型注入
二、联合查询
联合查询的查询列数是一直的
Select * from table union all select * from table
作用:用于判断是否存在漏洞,获取数据库信息、数据等,如果要显示后者查询的数据,需要将前者查询为空
三、双查询注入
报错原理:
在执行group by name语句时,MySQL会在内部建立一个虚拟表,用来储存列的数据,表中会有一个group_key值作为表的主键,这里的主键就是用来分类的name列中获取,当查询数据时,取数据库数据,然后查看虚拟表中存在不,不存在则插入新记录。
当我们加上count()函数时,操作过程为:查看虚拟表是否存在该主键值