The Oracle Hacker's Handbook: Hacking and Defending Oracle 下篇

The Oracle Hacker’s Handbook: Hacking and Defending Oracle

by David Litchfield John Wiley & Sons

触发器(Triggers )

在 Oracle 中,触发器是执行某些任务并在给定事件发生时自动触发的 PL/SQL 代码片段。可以为各种事件创建触发器,包括 DML 操作,如 INSERT、DELETE 和 UPDATE;并且它们可以设置为在事件之前或之后触发。触发器也可以定义为事件,例如用户登录、用户被删除或表被截断——换句话说,为所有类型的事件。当涉及到触发器时,有几个关键点需要记住。

首先,触发器以定义它的用户的权限执行。其次,就本章而言,可能更重要的是,就像任何 PL/SQL 对象一样,触发器可能容易受到攻击。在查看实际示例之前,查看一个人为的 SQL 注入示例会很有启发性。对于此示例,我们创建了两个表:一个称为 MYTABLE 以保存短字符串,另一个称为 MYTABLE_LONG 以保存长度超过 15 个字符的字符串的副本。然后我们在 MYTABLE 上创建一个触发器以在插入之前触发,这样如果有人试图将长度超过 15 个字符的字符串插入到 MYTABLE 中,副本也会存储在 MYTABLE_LONG 中。这个例子除了证明这一点之外毫无用处:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SQL> CONNECT SCOTT/TIGER
Connected.
SQL> SET SERVEROUTPUT ON
SQL> CREATE TABLE MYTABLE (V VARCHAR2(200));

Table created.

SQL> CREATE TABLE MYTABLE_LONG (V VARCHAR2(200));

Table created.

SQL> CREATE OR REPLACE TRIGGER MYTRIGGER BEFORE INSERT ON MYTABLE
2 REFERENCING NEW AS NEWROW
3 FOR EACH ROW
4 DECLARE
5 L NUMBER;
6 S VARCHAR2(2000);
7 BEGIN
8 L:=LENGTH(:NEWROW.V);
9 IF L > 15 THEN
10 DBMS_OUTPUT.PUT_LINE('INSERTING INTO MYTABLE_LONG AS WELL');
11 S:='INSERT INTO MYTABLE_LONG (V) VALUES (''' || :NEWROW.V ||
''')';
12 EXECUTE IMMEDIATE S;
13 END IF;
14 END MYTRIGGER;
15 /

Trigger created.

SQL> SHOW ERRORS
No errors.
SQL> INSERT INTO MYTABLE (V) VALUES ('Hello, world!');

1 row created.

SQL> INSERT INTO MYTABLE (V) VALUES ('Hello, world! More text...');
INSERTING INTO MYTABLE_LONG AS WELL

1 row created.

SQL> INSERT INTO MYTABLE (V) VALUES
('__________INJECT''POINT__________');
INSERTING INTO MYTABLE_LONG AS WELL
INSERT INTO MYTABLE (V) VALUES ('__________INJECT''POINT__________')
*
ERROR at line 1:
ORA-00917: missing comma
ORA-06512: at "SCOTT.MYTRIGGER", line 9
ORA-04088: error during execution of trigger 'SCOTT.MYTRIGGER'

Read More

The Oracle Hacker's Handbook: Hacking and Defending Oracle 上篇

The Oracle Hacker’s Handbook: Hacking and Defending Oracle

by David Litchfield John Wiley & Sons

探索黑帽黑客用来入侵和破坏 Oracle 的每一种技术和工具,这份深入指南向您展示了如何找到数据库中的弱点,以便更好地保护它们。

[TOC]

Oracle RDBMS概述

进程

​ 在Windows上还是在Linux平台上,构成Oracle服务器和服务的过程会有所不同。

Read More