SQL注入【三】——SQL注入分类

发布于 2020-07-02  97 次阅读


0x01 分类

注:以下分类具有重叠性

根据注入点的参数分

  • 数字型 :例如id=1这种类型,向数据库传入的是数字,参数不需要被引号括起来。
  • 字符型:?id= 后面值为由单引号或者双引号或者是单引号加括号包裹的字符串

按照数据请求方式来分类

  • GET注入:HTTP请求方式为get,注入点一般在get传入的参数部分,例如?id=1,id便是一个注入点。
  • POST注入:HTTP请求方式为post,注入点一般为提交的HTML表单, 即post传入的数据内容。(如搜索框,登录框);
  • HTTP头注入:HTTP的请求头存在注入点,例如XFF头,cookie,Host这些都是常见的注入点。

按照语句的执行效果来分类  

  • 报错注入:页面会返回错误信息,或者将语句的查询结果直接返回到页面(这是最常见的一种注入,一般手注就可搞定)
  • 盲注:
    • 基于布尔的盲注:盲注的意思就是你无法直接通过页面的返回内容来获取信息,页面只会返回真假,你需要对一个个字符进行测试,相对于报错注入,盲注的工作量比较庞大,一般写脚本或者用工具跑。
    • 基于时间的盲注:页面无法直接返回真假(yes或no),需要构造条件语句查看时间延迟的语句是否成功执行(观察页面的返回时间的长短)来进行判断。
  • 联合查询(union)注入:通过union来将多条语句的结果组合到一个结果中
  • 宽字节注入:宽字节注入是由编码不统一引起的,一般是在PHP+MySQL中出现
  • 堆查询注入:堆叠查询可以构造执行多条语句
  • 二次注入:将攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。

一个热爱技术的白帽子