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
按照注入的程度和顺序
- 一阶注入
- 二阶注入