添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

0x00 前言

​ 最近在实习,渗透跟 CTF 真的差距很大,既然如此,我就去学一下在实战环境中比较常见的 Oracle 数据库注入吧。毕竟 sql 注入这个东西在 CTF 中已经被玩坏了。想在大型比赛中看到正常的 sql 注入简直就是天方夜谭。只能靠自己的学习以及实战环境的摸索了。

0x01 入门

1.1安装

​ 既然是入门的话,那么首先就是 Oracle 的安装教学

1.2基础语法

​ 既然要了解 Oracle ,那么 Oracle 的基础语法一定要会,这里就默认有 mysql 基础了。讲一下和 mysql 不一样的地方。

1
Oracle 使用查询语句获取数据时需要跟上表名,没有表的情况下可以使用dual,dual是Oracle的虚拟表,用来构成select的语法规则,Oracle保证dual里面永远只有一条记录

然后就是 sql 语句的几个不同点。

  • sql 语句中必须要加 select 指名表名。也可以使用 dual 表进行查询。

  • Oracle 中只有 null 这个概念,没有空字符串这个概念,空字符串就是 null

  • Oracle sqlite 有点像,都是使用 || 当做字符串的连接符。所以在 sql 注入的时候自然也就有了 replace 注入。

  • Oracle 的单引号和 mysql 是一样的,不过双引号是用来消除系统关键字的。

  • 我们曾经看到的 rownum 是真是存在的。并且 oracle 中没有 limit 只能用下面的方式代替:

    1
    select * from pyy where rownum=1;
  • 单行注释采取和 sqlite 相同的 -- 。而多行注释符采用 /**/

    1.3系统表

    Oracle 的系统表:

  • dba_tables : 系统里所有的表的信息,需要DBA权限才能查询
  • all_tables : 当前用户有权限的表的信息
  • user_tables: 当前用户名下的表的信息
  • DBA_ALL_TABLES:DBA 用户所拥有的或有访问权限的对象和表
  • ALL_ALL_TABLES:某一用户拥有的或有访问权限的对象和表
  • USER_ALL_TABLES:某一用户所拥有的对象和表
  • user_tables 的范围最小, all_tables 看到的东西稍多一些,而 dba_tables 的信息最全。范围是:

    1
    dba_tables >= all_tables >= user_tables

    1.4权限和用户