SQL注入分类
SQLMAP
Union 注入
概念 :union 查询注入是最基础的注入。在 SQL 中, UNION 操作符用于合并两个或多个 SELECT 语 句的结果。union 查询注入利用 UNION 关键字可以追加一条或者多条额外的 SELECT 查询, 并将结果追加到原始查询中。联合查询会“纵向”拼接两个或多个 SELECT 语句的结果。
适用条件 :(1)网页存在注入点,有回显。 (2)需要满足 union 语句要求,即: union 前后两个 select 的结果集应具有相同列数; union 前后两个 select 的结果集对应列应是相同数据类型
注入步骤 :(1)首先判断是否存在注入点及注入的类型。 (2)使用 ORDER BY 查询列数、观察回显的位置。 (3)获取数据库名。 (4)获取数据库中的所有表名。 (5)获取数据库的表中的所有字段名 (6)获取字段中的数据。
报错注入
概念: 报错注入是利用网站的报错信息来带出我们想要的信息,就是在错误信息中执行 sql 语句 使用条件 考虑到成功率和时间成本比 union 成本高,需要数据库有错误信息,一般在 union 条 件不能实施的时候,在查询,新增,修改能都使用。
常用报错注入命令
1、group by 重复键冲突
(count()+floor()+rand()+group by 组合)就是利用 count()、rand()、floor()、 group by 这几个特定的函数结合在一起产生的注入漏洞
2、xpath 报错
布尔盲注
概念: 当改变浏览器传给后台 SQL 的参数后,浏览器没有显示对应内容也没有显示报错信息时,无法 使用 union 联合查询注入与报错注入,这时候可以试试看能否使用布尔注入
使用条件: 一般情况下,当带入参数为真和假时,页面会有不同的反映,比如有无显示也是一种不同,布 尔盲注就是根据这种不同来反推我们输入的条件是真还是假。
延迟盲注
概念: 也称延时注入、时间注入等,这种注入方式在传给后台的参数中,设置了一个 if 语句,当条 件为真时执行 sleep 语句,条件为假时无执行语句,然后根据浏览器的响应时间来推测 sleep 语句是否被执行,进而推测 if 条件是否为真。 延时盲注与布尔盲注的核心思想都是通过浏览器两种不同的响应来推测输入的条件的真假,布尔盲注是条件真假时页面会有不同显示,延时盲注则是显示结果真假只能从响应时间上进行推测
使用条件 :union,报错、布尔等搞不定的时候才考虑,效率极低
靶场练习:bbs