sql注入
- 一,SQL注入分类
- 按照注入的网页功能类型分类
- 按照注入点值的属性分类
- 基于从服务器返回内容
- 按照注入的程度和顺序
一,SQL注入分类
按照注入的网页功能类型分类
- 登录注入
- cms注入
cms逻辑:index.php首页展示内容,具有文章列表(链接具有文章id),articles.php文章详细页,URL中article.php?id=文章id读取id文章
按照注入点值的属性分类
-
数字型注入
特征:参数直接用于数字比较或计算
示例SQL:SELECT * FROM products WHERE id = 1
判断方法:
输入1+1看是否返回id=2的结果
输入1 AND 1=1和1 AND 1=2观察响应差异
输入1’看是否报错 -
字符型注入
特征:参数被单引号/双引号包裹
示例SQL:SELECT * FROM users WHERE username = ‘admin’
判断方法:
输入’看是否报错
输入admin’ AND ‘1’='1测试
观察闭合符号(单引号/双引号) -
搜索型注入
特征:参数用于LIKE模糊查询
示例SQL:SELECT * FROM articles WHERE title LIKE ‘%keyword%’
判断方法:
输入%’ AND 1=1 AND ‘%’='测试
尝试使用通配符%和_ -
排序型注入
特征:参数用于ORDER BY子句
示例SQL:SELECT * FROM products ORDER BY 1
判断方法:
修改排序参数为(SELECT 1)
尝试ASC/DESC后接注入语句
基于从服务器返回内容
-
显错型注入
特征:错误信息直接显示在页面上
判断方法:
输入特殊字符('、"、)等)触发错误
观察是否返回数据库错误信息 -
盲注(无显错)
–布尔盲注:
通过页面返回的真假状态判断
测试方法:AND 1=1/AND 1=2观察响应差异
–时间盲注:
通过响应时间延迟判断
测试方法:AND IF(1=1,SLEEP(5),0) -
联合查询注入
特征:可以使用UNION合并查询结果
判断方法:
测试ORDER BY确定列数
尝试UNION SELECT 1,2,3
按照注入的程度和顺序
- 一阶注入
- 二阶注入