-
03-01. Server Side Attack - Relational DBMS해킹/웹해킹 이론 2023. 11. 21. 02:42
Relational DBMS
관계형 데이터베이스 시스템을 이르는 말로 관계형은 행과 열의 집합인 테이블형식으로 데이터를 저장하며 비관계형은 키-값 형식으로 저장을 한다. 대표적인 Relational DBMS로는 MySQL, MariaDB, PostgreSQL, SQLite이 있다. RDBMS에서 관계 연산자는 Structured Query Language (SQL) 라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작한다. SQL 쿼리의 종류로는 DDL, DML, DCL이 있다.
- DDL(Data Definition Language)
데이터를 정의하기 위한 언어. 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행 - DML(Data Manipulation Language)
데이터를 조작하기 위한 언어. 데이터베이스 내의 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행. - DCL(Data Control Language)
데이터베이스의 접근 권한 등의 설정을 하기 위한 언어. 데이터베이스 내에 이용자의 권한을 부여하기 위한 GRANT와 권한을 박탈하는 REVOKE가 대표적이다.
SQL Injection
사용자가 로그인을 할 때, id와 pw를 입력한다면 sql로 질의해 dbms에 해당 계정정보가 있는지 확인 후 로그인을 시도할 것이다. 이때 id pw를 입력하는 그대로 받아들여 sql 문에 넣는다면 해당 sql 쿼리를 변경할 수 있다.
Select * from user_table where uid='' and upw=''
이때 uid가 admin인 data를 알아낼 수 있는 여러가지 방법이 있다.
- id에 '-- 삽입 : and upw 구문을 주석으로 처리해 uid가 admin인 데이터를 얻어온다.
- id에 admin' or '1 삽입 : WHERE (uid='admin') OR ('1' AND upw=''); 처럼 해석이 돼서 uid가 admin일 경우 항상 true, uid가 admin이 아닐 경우 upw가 empty string인 경우를 반환한다.
- id에 '# 삽입 : 위의 주석 경우와 동일하다.
Blind SQL Injection
SQL Injection과 달리 데이터베이스의 데이터를 하나하나 비교하며 찾아가는 방식을 말한다. 활용하는 함수는 다음과 같다.
- ascii
전달된 문자를 아스키 형태로 반환하는 함수입니다. 예를 들어, ascii('a')를 실행하면 'a' 문자의 아스키 값인 97을 반환합니다. - substr (string, position, length)
해당 함수는 문자열에서 지정한 위치부터 길이까지의 값을 가져옵니다.
# 첫 번째 글자 구하기 (아스키 114 = 'r', 115 = 's') SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=114-- ' and upw=''; # False SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=115-- ' and upw=''; # True # 두 번째 글자 구하기 (아스키 115 = 's', 116 = 't') SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,2,1))=115-- ' and upw=''; # False SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,2,1))=116-- ' and upw=''; # True
'해킹 > 웹해킹 이론' 카테고리의 다른 글
03-03. Server Side Attack - Command Injection (0) 2023.11.21 03-02. Server Side Attack - Non-Relational DBMS (0) 2023.11.21 02. SOP 원칙 및 Client Side Attack (0) 2023.11.18 01. Introduction (0) 2023.11.15 웹해킹 시작! (0) 2023.07.08 - DDL(Data Definition Language)