[SQL인젝션] 공격 원리

오대진·2024년 4월 29일
  1. 공격 원리 : 웹에 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. 공격 종류

1) 인증 우회 공격

  • 로그인 기능 같은 인증 기능에 대해서 공격하는 것
  • 정상적인 값[ID,PASS,PASS]을 입력하는 것이 아닌 비정상적인 입력값[SQL 구문]을 입력하여 인증을 우회하는 공격

2) 데이터 조회 공격[가장 빈도스가 높은 공격]

  • SQL 구문 삽입을 통하여 DB 내에 있는 데이터를 조회하는 공격

3) 시스템 명령어 실행공격

  • SQL 구문 삽입을 통하여 DB서버 시스템 명령어를 실행하는 공격

  • 가장 타격이 크고, 권한을 많이 가져오는 공격이라 난이도가 좀 높다.


  1. 취약점 분석순서
    1) 사이트 내 취약점 분석
  • 에러 유/무 확인 : 어플 에러가 아닌, DB에 대한 에러

  • 취약점 유무 확인 : 해당 특정 기능에 대해서 SQL 인젝션에 대한 취약점이 발생하는지 안하는지?

  • 조건 구문 완성 : 공격 페이로드를 만드는 것

    a) 에러 유/무 취약점 분석


  • 에러를 통해 여러가지 힌트를 제공해준다.

  • 에러가 발생하면 공격자 입장에선 희망으로 볼 수 있다.

0개의 댓글