数据库
首页 > 数据库> > oracle联合注入

oracle联合注入

作者:互联网

oracle联合注入

1. 前置知识:

  1. SYS_CONTEXT()

    • SYS_CONTEXT()函数是Oracle提供的一个获取环境上下文信息的预定义函数。
    • 语法格式:
      • SYS_CONTEXT('namespace','parameter'{,LENGTH});
      • 第一个参数为'USERENV',是固定的,第二个参数也是固定的,但是是多选固定。
    • SYS_CONTEXT 实际上就是一个Oracle存储和传递参数的容器访问函数。
    • select sys_context('USERENV','CURRENT_USER') from dual;--返回当前的登陆用户
      06_.SYS_CONTEXT()函数
  2. dual表

    • dual是一个由Oracle提供的最小的表,不论进行何种操作,它都只有一条记录——'X'。其经常用来构成select的语法规则(因为在oracle中,当你使用select查询语句时必须要加上表名,但是当我们在进行个别查询操作时,比如查询系统时间等,并不需要表名,为了保持select语法规则,于是就提供了dual表)。
      01_dual表
  3. V_$INSTANCE系统视图

    • 该系统视图用来存储当前数据库实例的状态信息
    • 其中的字段名:instance_name,为当前实例的名称(这正是我们所需要的)
      02_V$INSTANCE系统视图
  4. sys.v_$version系统视图

    • 用来存储数据库系统的版本信息
      03_V_$VERSION系统视图
  5. user_tables系统视图

    • 用来存储当前用户所拥有的表的相关数据
      04_USER_TABLES系统视图
  6. user_tab_columns系统视图

    • 该视图用来描述当前用户拥有的表、视图和集群的列
      05_USER_TAB_COLUMNS系统视图

2. 注入流程

  1. 判断注入点
  2. 判断当前注入点的字段数
  3. 确定显示位
  4. 查询当前登录用户
  5. 查询当前数据库版本信息
  6. 查询当前数据库名
  7. 查询我们所需的表名
  8. 查询表中的字段名
  9. 查询账户名/密码

3. 靶场实战(这里以“墨者”的的靶场为例)

3.1 判断注入点

3.2 判断当前注入点的字段数

3.2 确定显示位

3.3 查询当前登录用户

3.4 查询当前数据库版本信息

3.5 查询当前数据库名

3.6 查询我们所需的表名

3.7 查询表中的字段名

3.8 查询账户名/密码

标签:dual,union,查询,联合,oracle,null,id,select,注入
来源: https://www.cnblogs.com/02SWD/p/15833983.html