- 공격 원리 : 웹에 SQL 구문 삽입
Ex) 로그인 창을 예를 들어 아이디 창에 SQL 구문을 입력하여 원하는 계정 탈취
간단한 예로 ID = ' or 1=1 -- Pass: abcabc 입력 시 이 구문이 웹서버로 이동되고, 사용자의 입력값에 따라 구문이 완성되어, 데이터베이스에 전달된다.
자동으로 완성되는 구문은 SELECT * FROM member WHERE id="or 1=1--' and pw='ENC_DATE'로 전송된다.
or은 둘 중에 하나는 참이다 라는 뜻으로, ' 이것은 참이 아니므로 1=1이 참이 되므로 로그인된다.
- 공격 종류
1) 인증 우회 공격
- 로그인 기능 같은 인증 기능에 대해서 공격하는 것
- 정상적인 값[ID,PASS,PASS]을 입력하는 것이 아닌 비정상적인 입력값[SQL 구문]을 입력하여 인증을 우회하는 공격
2) 데이터 조회 공격[가장 빈도스가 높은 공격]
- SQL 구문 삽입을 통하여 DB 내에 있는 데이터를 조회하는 공격
3) 시스템 명령어 실행공격
- 취약점 분석순서
1) 사이트 내 취약점 분석
-
에러 유/무 확인 : 어플 에러가 아닌, DB에 대한 에러
-
취약점 유무 확인 : 해당 특정 기능에 대해서 SQL 인젝션에 대한 취약점이 발생하는지 안하는지?
-
조건 구문 완성 : 공격 페이로드를 만드는 것
a) 에러 유/무 취약점 분석

-
에러를 통해 여러가지 힌트를 제공해준다.
-
에러가 발생하면 공격자 입장에선 희망으로 볼 수 있다.