Almon Dev

모의해킹 공부 (5주차 정리) 본문

모의해킹/모의해킹

모의해킹 공부 (5주차 정리)

Almon 2024. 11. 15. 01:55

5주 차 강의

 

1개월 정리

웹서버
WebServer : 정적인 페이지를 전송
WebApplicationServer(WAS) : 동적으로 페이지를 생성
DataBase : 데이터를 저장해 두는 공간
Browser : 웹서버로부터 전송받은 데이터를 화면에 출력해 줌

로그인
식별 : 많은 데이터중에서 하나를 골라내는 것
인증 : 본인이 맞는지 확인하는 것
쿠키 : 브라우저에 데이터를 저장하는 방식
세션 : 서버에 데이터를 저장하는 방식
세션 ID : 어떤 세션을 사용하는 유저인지 구별하는 식별정보

버프스위트
웹 프록시 툴 : 서버와 클라이언트 사이에서 주고받는 데이터를 읽거나 변경가능

 

SQL Injection

사용자가 입력한 값을 검증하지 않고 sql쿼리문에 넣을 때 발생하는 취약점입니다.

// 로그인 쿼리문
$sql = "select * from users where id = '$input_id' and password = '$pass'";

아이디를 입력하는 창에 admin' or '1' = '1을 입력하면 비밀번호에 무엇을 넣든 로그인에 성공합니다.

 

$sql = "select * from users where id = 'admin' or '1' = '1' and password = '$pass'";
=> sql에서 and는 or보다 우선순위가 높기 때문에 and가 먼저 연산이 처리됩니다.
1 > '1' = '1' and password = '$pass' 
2 > id = 'admin'  or false
id = 'admin'인 경우 true

 

인증을 우회하는 방법

Jump

회원가입 동의 페이지 -> 본인인증 페이지 -> 회원가입 페이지로 이동될 때

회원가입 동의페이지 -> 회원가입 페이지로 뛰어넘을 수 있습니다.

=> 인증이 완료되었는지 서버에서 다시 확인할 필요가 있습니다.

 

Brute force

아이디나 비밀번호를 모를 때 무차별적으로 대입하는 방식입니다.

=> 인증에 여러 번 실패하면 제한시간을 걸거나 잠금을 걸어야 합니다.

완전 탐색 : 가능한 모든 경우의 수를 넣어보기
ex) 집 비밀번호를 0000부터 9999까지 눌러보기

사전 대입 : 사람들이 많이 사용하는 방식을 고른 뒤에 넣어보기
ex) 비밀번호에 휴대폰 뒷자리, 생년월일, 이름, 별명

 

과제

1. 복습, 정리
2. ctf문제풀기
3. 문제풀이 쓰기
4. 웹개발 부족한 부분 채우기