728x90
SQL Injection이란?
개요
- 서버의 Database를 공격할 수 있는 공격 방식
- SQL에 악의적인 쿼리(Qurey)를 삽입, 실행하게 만듬
- 굉장히 오래된 공격 기법
- 꾸준히 취약점이 발견됨
- 공격 성공시 치명적
*쿼리문: 명령 또는 결과값을 Client가 호출(조건문 사용)하면 Database가 반환
공격 기법
※ 주의 !
학습 용도 외에는 사용하지마세요
아래는 일반적인 로그인 폼에 정상적으로 로그인 하는 방식.
더보기
로그인 방식
SELECT USER FROM USER_TABLE WHERE id = '입력값' AND pw= '입력값';
그렇다면 SQL Injection을 시도한다고 하였을 때, ID 값은 알지만 PW 값을 모른다면 공격자는 어떻게 공격할까?
예를 들어 id의 값이 'admin' 이라고 하자 그럼 아래와 같이 공격할 수 있음. 아래의 공격은 공격자가 인증 절차를 우회하는 방식임
더보기
SELECT USER FROM USER_TABLE WHERE id = 'admin' AND pw= ''OR'1'='1';
위 공격 명령어를 풀어서 설명하자면
- 'id = 'admin' : 사용자의 아이디가 'admin'인 레코드를 찾도록 지정
- 'pw= ''OR '1'='1' : OR 1=1 부분은 항상 참이되는 조건, 앞에 있는 쿼리 연산 or 뒤에 있는 쿼리를 묶어서 처리함
결과적으로 이 쿼리는 비밀번호를 올바르게 입력하지 않더라도 'admin'이라는 아이디를 가진 사용자의 정보에 접근할 수 있게 됨
- 싱글쿼터 (')는 문자열의 시작, 끝에 존재
- 반드시 짝수개로 존재
- 임의로 싱글쿼터를 추가하면서 남게된 싱글쿼터 한개와 그 뒤에 존재하는 AND 조건문을 무효화 시킴
정리
- 공격자는 싱글쿼터(')를 통해 임의로 문자열의 범위를 종료시킴
- 남은 뒷 부분을 주석처리 시킨다. => 쿼리문 SELECT * FROM USER WHERE id = 'admin' 까지 처리
- Database는 pw가 맞는지에 대한 비교를 생략하고 'admin' 계정으로 로그인
※ 위와 같은 이유 때문에 admin 계정을 따로 생성하지 말라고 함
'모의해킹 > 이론' 카테고리의 다른 글
[모의해킹] DoS(Denial of Service) 공격에 대하여 (0) | 2024.04.15 |
---|