SQL Injection은 SQL(DB언어) 구문 사이에 끼워넣는 것으로
이를 통해 DB 데이터를 추출하거나, [인증을 우회]할 수 있다.
# 로그인페이지
예시 로직 : 아이디와 비밀번호가 같으면 로그인 성공
예시 구문 : select * from member where id= '_입력한ID_' and pass= '_입력한PASS_'
사용자가 입력한 값을 해당 위치에 넣고, DB 있는지 물어보는 방식으로 동작한다.
위 값이 존재하면 로그인 성공, 없으면 실패
예시 구문이 오류가 나지 않으려면,
우리가 입력한 아이디 비밀번호를 어떻게 입력해야 해당 구문이 오류가 나지 않는지 생각해야한다.
구분하여 보자면 다음과 같다.
이미 입력된 바꿀 수 없는 부분 : select * from member where id= '
입력할 수 있는 부분 : ___________
이미 입력된 바꿀 수 없는 부분 : ' and pass = '
입력할 수 있는 부분 : ___________
이미 입력된 바꿀 수 없는 부분 : '
로그인 할 수 있는 계정이 doldol / dol1234 라고 했을 때
비밀번호를 모른채로 로그인 하려면 다음과 같이 입력하면 된다.
select * from member where id= 'doldol' or '1' = '1' # ~~~~ 뒤는 주석처리
doldol 이라는 아이디가 DB에 있고 (참)
1=1도 참 이기 때문에, 결과가 있는 것으로 회신된다. > 고로 로그인 성공
# AND와 OR
AND 조건은 OR 조건보다 우선한다.
예를 들어,
select * from member where id= 'doldollll' or '1'='1' and pass= 'dol1234'
에서
'1'='1' and pass= 'dol1234'
DB pass 중에 dol1234가 있고, '1'='1'도 참이기 때문에 참
(AND는 둘 다 참이어야 참)
그 후에
id= 'doldollll' or (참)
or 조건이기 때문에 DB id에 해당하는 아이디가 없더라도 결과는 참으로 나온다.
(OR은 둘 중 하나만 참이어도 참)
phpmyadmin의 SQL에서 연습할 수 있다.
내가 상상한 게 되는지 안 되는지
# 인증 우회
인증 우회에는 다음과 같은 방법들이 있다.
1. SQL Injection
2. 쿠키 변조
3. 직접 접근 시도
SQL Injection
: 위에서 사용한 인젝션을 이용하여 우회하는 방법
쿠키 변조
: Burp 를 통해 쿠키를 변조한다.
직접 접근 시도
: 가끔 DB에서 제공해주는 파일 이름 (웹페이지 주소)으로 추정하여 접근을 시도해 볼 수 있다.
'모의해킹 공부하기 > 모의해킹 수업 복습' 카테고리의 다른 글
| [14주차] File Upload 공격 및 대응 방안 (0) | 2024.02.07 |
|---|---|
| [6주차] SQL Injection으로 데이터 추출하기 (UNION SQL Injection) (1) | 2023.12.04 |
| [4주차] Burp Suite 기본 사용 방법 (0) | 2023.11.22 |
| [3주차] 로그인 (인증과 식별, 식별/인증 동시), 로그인 유지(쿠키와 세션) (0) | 2023.11.12 |
| [2주차] Database (MySql) phpMyAdmin과 sql사용법 (0) | 2023.11.12 |