ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL Injection 종류와 발생 원리 - 1
    Web - Security/Injection 2023. 5. 8. 22:44

     

    SQL이란?

    SQL은 Structured Query Language의 약자로, 데이터베이스를 관리하고 검색하는 데 사용되는 표준 프로그래밍 언어이다

    SQL은 관계형 데이터베이스 관리 시스템(RDBMS)에서 많이 사용되며, 데이터를 삽입, 업데이트, 삭제, 검색하는 데 사용된다

     

    위 식은 가장 간단한 SQL 질의문이다
    위 식의 의미는 test 라는 테이블에서 모든 열의 정보를 가져오라는 질의문이다

     

    위 식은 member라는 테이블에서 user_id, password 를 가져오라는 질의문이다
    실행 결과로 member 테이블에 있는 모든 아이디와 비밀번호를 가져온다

     

    위 식에서 홍길동이라는 사람의 정보만 가지고 오고 싶어서 뒤에 WHERE 라는 조건절을 추가해 줬다
    질의 결과는 홍길동이라는 사람의 id와 비밀번호만 가지고 오는 결과일 것이다

     

    SQL 질의문은 줄을 구분하지 않고 ;(세미콜론)이 나올 때까지 계속 유효한 의미를 가진다 ( 문장의 종료를 알림 )

    위 질의문은 member라는 테이블에서 user_id, password의 열만 가져온다
    그리고 이렇게 골라낸 정보들 중에서 user_id가 홍길동 이어야 하고 password는 홍길동123 인 정보만 가지고 오게 된다

    위 질의문을 이용하여 '홍길동' 자리에는 고객이 입력하는 아이디가 들어가게 되고 '홍길동123'에는 고객이 입력한 비밀번호가 들어가 해당 고객의 정보를 찾을 수 있게 되는 것이다

     

     

     

    SQL Injection

    SQL Injection이란 SQL 쿼리를 실행할 수 있는 코드를 삽입하여, 원래 의도와는 다른 동작을 유발하는 공격 기법이다

     

    위 질의문에서 '아이디 입력' 과 '비밀번호 입력' 에는 고객이 로그인 홈페이지에서 아이디, 비밀번호란에 입력한 정보가 그대로 들어오게 된다

    예를 들어 고객의 아이디가 duli_123이고 비밀번호가 ZZang_Gu123 이라고 하자
    고객은 아이디 입력란에 duli_123 을 입력할 것이고 비밀번호 입력란에 ZZang_Gu123 을 입력하고 로그인 버튼을 누르게 될 것이다

     

    그럼 서버에는 위와 같은 질의문이 완성이 되어 아이디가 duli_123이고 비밀번호가 ZZang_Gu123인 정보를 찾아서 보내줄 것이다

    그럼 여기서 아이디에 SQL 질의문을 작성하고 비밀번호를 입력하면 어떻게 될까?

     

    아이디에     duli_123' AND '가진돈 다 내놔!!      를 입력하였고  비밀번호는 정상적으로 입력하였다

    위 질의문은 정상적인 질의문이 되고 가진돈을 다 주도록 된다
    AND는 앞에 조건과 뒤에 조건 모두 만족을 해야 참이 되므로 OR을 이용하여 앞조건이든 뒤조건이든 1개만 맞으면 참이 되도록 SQL질의문을 작성하여 보낼 수 도 있다

     

    위 질의문의 의미는 user_id가 duli_123 이거나 1과 1이 같으면 참이 된다
    아이디가 틀리더라도 1과 1은 같기 때문에 항상 참인 조건이다

    1과 1이 같아서 참인 조건이 만족되었으므로 정상적으로 실행이 된다

     

    --을 이용하여 뒤에 문장은 주석처리를 하여 위와 같은 SQL 질의문이 완성이 된다

     

     

    위와 같이 원래 의도와는 다른 결과가 발생하여 공격자는 해당 홈페이지에 있는 모든 고객의 정보를 가져와 악의적으로 이용하는 등 부정적인 결과가 발생하게 된다

     

    728x90

    'Web - Security > Injection' 카테고리의 다른 글

    SQL Injection 종류와 발생 원리 - 2  (0) 2023.05.08
Designed by Tistory.