web渗透培训相关 ·

SQL注入的分类

Sql注入根据数据提取通道的类型,从服务器接收到的响应等可以分为不同的类型

基于输入的数据类型

  • 数字型注入点
    在 Web 端大概是 http://xxx.com/news.php?id=1这种形式,其注入点 id 类型为数字,所以叫数字型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where id=1
  • 字符型注入点
    在 Web 端大概是 http://xxx.com/news.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name='admin'。注意多了引号。
  • 搜索型注入点
    这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示在的链接地址里面,而是直接通过搜索框表单提交。 此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%'

基于数据提交的方式

这种分类其实只是 HTTP 传递数据的方式不同,严格来讲和 SQL 没多大关系,但是在利用一些注入点的时候,这会影响到我们的代码中发送数据的形式,所以我在这里提出来了。

  • GET 注入
    提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接 http://xxx.com/news.php?id=1 , id 是注入点。
  • POST 注入
    使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
  • Cookie 注入
    HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
  • HTTP 头部注入
    注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。

基于从服务器接收到的响应

  • 基于错误的SQL注入
  • 联合查询的类型
  • 堆查询注射
  • SQL盲注

    SQL盲注中按执行效果来分:

    • 基于布尔SQL盲注
      根据返回页面的结果判断构造的SQL条件语句的真假性
    • 基于时间的SQL盲注
      当根据页面返回的内容不能判断出任何信息时,使用条件语句查看时间延迟语句是否执行,也就是看页面返回时间是否增长来判断是否执行。
    • 基于报错的SQL盲注
      这一类的也叫有回显注入,页面会返回错误信息,或者是把注入语句的结果直接返回在页面中
      基于错误的SQL注入主要是SQL Server转储一些错误给用户,通过应用程序的这个错误来进行利用的注入类型.下图中黄色部分显示的是错误。后面将详细的进行介绍。盲注漏洞是指在注射语句之后无法在前端看到后端数据库服务器的反应等,因此”盲”说明了一个事实,只能通过一些计算的假设进行尝试注入.

基于程度和顺序的注入

  • 一阶注射
  • 二阶注射
    一阶注射是指输入的注射语句对WEB直接产生了影响,出现了结果;二阶注入类似存储型XSS,是指输入提交的语句,无法直接对WEB应用程序产生影响,通过其它的辅助间接的对WEB产生危害,这样的就被称为是二阶注入。

介绍几个常用的系统函数:

  1. version()——MySQL版本
  2. user()——数据库用户名
  3. database()——数据库名
  4. @@datadir——数据库路径
  5. @@version_compile_os——操作系统版本

参与评论