Тест
@'
WHENEVER SQLERROR CONTINUE
ALTER USER SYSTEM IDENTIFIED BY oracle ACCOUNT UNLOCK;
ALTER USER SYS IDENTIFIED BY oracle ACCOUNT UNLOCK;
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
DECLARE
v_count NUMBER := 0;
BEGIN
BEGIN
SELECT COUNT(*) INTO v_count
FROM v$pdbs
WHERE UPPER(name) = 'FREEPDB1'
AND open_mode = 'READ WRITE';
EXCEPTION
WHEN OTHERS THEN
v_count := 0;
END;
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'ALTER SESSION SET CONTAINER = FREEPDB1';
END IF;
END;
/
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
ALTER USER SYSTEM IDENTIFIED BY oracle ACCOUNT UNLOCK;
BEGIN
EXECUTE IMMEDIATE 'DROP USER CTF CASCADE';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -1918 THEN
RAISE;
END IF;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP USER COMPROMISED_USER CASCADE';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -1918 THEN
RAISE;
END IF;
END;
/
CREATE USER CTF IDENTIFIED BY ctf
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
GRANT CREATE SESSION, CREATE TABLE TO CTF;
ALTER USER CTF QUOTA UNLIMITED ON USERS;
CREATE TABLE CTF.CTF_FLAG (
FLAG_VALUE VARCHAR2(200)
);
INSERT INTO CTF.CTF_FLAG VALUES ('FLAG{DEMO_ORACLE_AGENT_OK}');
COMMIT;
CREATE USER COMPROMISED_USER IDENTIFIED BY compromised_user
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
GRANT CREATE SESSION, CREATE TABLE TO COMPROMISED_USER;
ALTER USER COMPROMISED_USER QUOTA UNLIMITED ON USERS;
CREATE TABLE COMPROMISED_USER.CREDENTIALS (
USERNAME_VALUE VARCHAR2(128),
PASSWORD_VALUE VARCHAR2(128)
);
INSERT INTO COMPROMISED_USER.CREDENTIALS VALUES ('CTF_STUDENT', 'ctf_student');
COMMIT;
SELECT owner, table_name
FROM all_tables
WHERE owner IN ('CTF', 'COMPROMISED_USER')
ORDER BY owner, table_name;
SELECT * FROM CTF.CTF_FLAG;
SELECT * FROM COMPROMISED_USER.CREDENTIALS;
EXIT;
'@ | docker exec -i -u oracle brave_black bash -lc "sqlplus -s / as sysdba"; docker commit brave_black mtuci-oracle-ctf-ready:latest
ORACLE_HOST=127.0.0.1
ORACLE_PORT=1521
ORACLE_SERVICE=FREEPDB1
ORACLE_USER=system
ORACLE_PASSWORD=oracle
ORACLE_SYS_PASSWORD=oracle
ORACLE_DATAFILE_DIR=/opt/oracle/oradata/FREE/FREEPDB1