공격로그
192.168.1.1 - - [28/Apr/2025:15:24:32 +0000] "GET /user/profile/view.php?id=1024 UNION SELECT (SELECT CONCAT(0x6162636465,IFNULL(CAST(username AS CHAR),0x20),0x78797a7173,IFNULL(CAST(email AS CHAR),0x20),0x78797a7173,IFNULL(CAST(password AS CHAR),0x20),0x78797a7173,IFNULL(CAST(created_at AS CHAR),0x20),0x6162636465) FROM accounts.users LIMIT 0,1),NULL,NULL-- -"
union 기반
로그 분석
- 공격 종류
- UNION 기반 SQL Injection
- 기존 정상 쿼리의 결과 뒤에 공격자가 원하는 쿼리 결과를 붙여 반환하게 만듦
- 공격 목적
- accounts.users 테이블에서 username, email, password, created_at를 조회해 탈취하려는 시도.
- 민감한 사용자 정보를 노림
- 16진수(Hex) 문자열 사용한 이유(마커 문자열)
- 0x6162636465(abcde), 0x78797a7173(xyzqs)를 붙여서 원하는 값을 빨리 찾을 수 있도록 함.
- uername, email 이런 건 한 페이지 안에 중복되는 것들이 많을 것이기 때문에, 결과 데이터가 HTML이나 기타 텍스트에 섞이지 않게 하기 위해 사용.
- 기술적 특징
- IFNULL(CAST(컬럼명 AS CHAR), 0x20) 사용: 값이 NULL이면 공백으로 대체.
- LIMIT 0,1: 첫 번째 사용자 정보만 가져옴
- NULL,NULL: 기존 쿼리 칼럼 수 맞추기 위한 더미 데이터