一、定义与原理
SQL注入(SQL Injection)是通过将恶意SQL代码插入应用程序的输入参数,欺骗数据库执行非授权操作的攻击方式。其核心原理是用户输入的数据被当作代码执行,例如未过滤的单引号闭合原始SQL语句结构,注入恶意指令。
二、攻击分类与场景
1. 按数据类型分类
- 数字型注入:参数无需引号闭合,如
id=1 AND 1=1
- 字符型注入:需闭合单引号,如
username='admin' OR '1'='1'
- 搜索型注入:利用模糊查询符号(如%),如
name LIKE '%' UNION SELECT...
2. 按攻击手法分类
- 联合查询注入:通过
UNION SELECT
扩展查询结果,获取数据库信息(如库名、表名) - 报错注入:利用数据库错误回显信息,如
extractvalue()
函数触发错误7 - 布尔盲注:通过页面返回真假状态推断数据,如
1' AND (SEL