HTTP 프로토콜
Hypertext Transfer Protocol의 약어로 인터넷 상에서 데이터를 주고받기 위해
서버/클라이언트 모델을 따르는 프로토콜이다.
클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다. HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.
웹서버의 구조
(1) WEB Server (2) WAS (동적 페이지) > SQL 명령 (3) DB
*WEB Server: HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다.
*WAS(WEB Application Server): 웹서버로부터 애플리케이션 로직 실행 요청을 받으면 실행해 반환해줌.
*DB(Data Base): WAS에서 Data를 요청하기도 함.
* WEB Server vs WAS
= 정적 컨텐츠(HTML, CSS, IMAGE) vs 동적 컨텐츠(JSP, ASP, PHP)
= 정적 페이지 vs 동적 페이지(ex. login)
⇒ 데이터 처리방식이 다름.
⇒ WAS는 보여지지 않아 보안이 된다.
* Server Side Script VS Client Side Script
= 백엔드 vs 프론트앤드
= WAS에서 실행 vs 클라이언트 웹 브라우저에서 실행
HTML 코드 <a> <button> <inout>
웹 브라우저 측 실행 = 클라이언트 측 코드
서비스를 하고 있는 코드가 서버.
역할, 서비스는 각각의 포트번호에 매핑되어 연결된다.
/*
#공부하고 수정될 부분
Burp Suite program)
score.php
#vim A_scpre.html
A Student Score
<h1>Congrat!</h1>
A: 200
값이 출력과 똑같음. 서버처리 코드 없음.
<?php
ffhvkjhsjv~~
echo(실행) ~
?>
PnP코드 서버측 코드(동적)
score.php?name=nomaltic&score=100 ?뒤는 파라미터,메서드. GET방식으로 값을 같이 보냄.
서버측 코드는 서버에서 실행되는것 클라이언트측 코드는 내 컴 즉, 웹브라우저에서 실행
<script> 자바자바 alert('Hello') </script> → 서버에서 실행 X 그냥 전달. 클라이언트 웹 브라우즈에서 실행된다.
*/
WEB Proxy
대리인, 중간자 = 우리가 접근할 수 없는 네트워크에 접근하기 위해서 사용함.
예시 1) 특정 회사에서 보안을 위해 외부와 통신을 제한할때 예외적인 상황이 생기면 프록시 서버를 줌.
예시 2) 현재 위치가 아닌 다른 나라 위치를 빌려와 사용할 때 등등
웹 프록시 툴 (Burp Suite)
프록시를 사용하여 네트워크에서 통신하는 HTTP request를 가로채 분석 및 수정하고,
취약점 테스트나 해킹을 할 수 있는 점검도구.
1. 어떤 데이터를 사용하는지 알 수 있음.
2. 구조를 파악하면 보내는 데이터를 변조할 수 있음.
⇒ 파라미터 변조.
Burp suite = 패킷을 가로채는 프록시 툴
로그인(Login)
모든 요청은 독립적이다. 그러면 로그인은 뭐지?
- 쿠키(포스트잇을 붙이는 것)로 로그인 유지
- 세션 활성화 = 세션 테이블, 값 저장 로그인 항목에 A(1) = * 저장, Session ID 1번임을 알림
⇒ 세션아이디만 바꾸면 똑같이 유출이 될 수 있기때문에 ID는 예측가능한 수로 지정하지 않음.
해커는 크로스 아이디 스크랩트, 엠아이티공격 등으로 이 세션아이디를 알아내려고 함.
Cookie) loginUser: nimaltic 5 <> A , Session ID 54454fjkgv!@$ - <>B / forward
'Web hacking > Nomaltic) 웹 해킹 수업 노트 👩💻' 카테고리의 다른 글
[2주차]식별과 인증 (0) | 2021.10.20 |
---|---|
[2주차]SQL Injection (0) | 2021.10.20 |
Ubuntn 20.04에 APM 설치하기 (Apache2, Mysql. PHP) (0) | 2021.10.19 |
VirtualBox를 이용하여 Ubuntu 20.04 가상 머신 설치하기, 계속하기 버튼 설치 오류 해결법 (0) | 2021.10.19 |
APM? PHP란? (0) | 2021.10.16 |