[웹해킹/5_SQL 인젝션 공격] UNION 공격

주연쓰·2021년 7월 19일
0

웹해킹

목록 보기
16/23

앞의 글에 이어지는 내용, SQL - WHERE 공격 참고


3. SQL 인젝션 공격 - UNION 공격

UNION(합집합)을 이용하면 데이터베이스의 모든 정보를 알아낼 수 있다.
그러나, 앞의 원래 query문이 요청하는 칼럼의 수와 UNION 뒤의 query문이 요청하는 칼럼의 수가 같지 않으면 error가 발생한다.

(1) 원래 쿼리문이 몇 개의 칼럼을 요청하는지 알아내야 함 - UNION 사용

명령창에

1' UNION SELECT 1#

입력하면, 다음과 같이 칼럼수가 맞지 않는다는 error 가 발생한다.

칼럼 수를 두개로 늘려 다음 명령을 입력해보면,

1' UNION SELECT 1,2#

성공적으로 결과를 반환한다.

따라서 앞의 select문에서 두개의 칼럼을 요청한다는 것을 알 수 있다.

(2) 원래 쿼리문이 몇 개의 칼럼을 요청하는지 알아내야 함 - ORDER BY 사용

order by는 하나의 칼럼을 기준으로 정렬할 때 사용한다.

먼저, 다음과 같이 입력하면

1' ORDER BY 1#

첫번째 칼럼을 기준으로 정렬하는 것으로 결과가 출력된다.

두번째 칼럼을 기준으로 했을 때도 마찬가지로 결과가 출력된다.

1' ORDER BY 2#

그러나 세번째 칼럼을 기준으로 정렬했을 때 에러가 발생한다.

따라서 세번째 칼럼은 존재하지 않으며, 두개의 칼럼만 존재한다는 것을 알 수 있다.

UNION을 사용하면, 정확한 값을 입력할 때 까지 일일이 대입해봐야 하지만 ORDER BY를 사용하면 입력한 값보다 큰지/작은지로 판단하기 때문에
ORDR BY를 사용했을 때 더 빠르게 칼럼의 수를 찾을 수 있다.

profile
( •̀ ω •́ )✧

0개의 댓글