Web Hacking/Dreamhack

[Dreamhack] Web Hacking STAGE 2

SolB 2022. 7. 6. 18:24

STAGE 2: Background - Web

 

웹 기본 상식

 

> Background : HTTP/HTTPS

인코딩

: 0과 1로 우리의 문자를 표현하는 것

 

- 아스키(Ascii) : 7bit 데이터에 대한 인코딩 표준

 ⋅ ex | '1000001' -> 'A'

 ⋅ 영어는 아스키, 한글은 CP-949, EUC-KR 등을 사용

 ⋅ 호환성 측면에서 국제 sw개발 회사에 큰 부담

 

- 유니코드(Unicode) : 인코딩의 호환성 측면의 한계를 해결하기 위해 모든 언어의 문자를 하나의 표준에 담기 위한 표준

 ⋅ 한 문자는 최대 32bit로 표현 -> 표현 가능한 정보의 가짓수 2^32 (대략 42억개)

 ⋅ 한글, 한자, 히라가나, 가타카나, 알파벳 뿐 아니라 이모지도 이에 포함

 

통신 프로토콜

클라이언트 : 요청 <-------> 서버 : 응답

 

- 프로토콜(Protocol) : 규격화된 상호작용에 적용되는 약속

 ⋅ ex | TCP/IP, HTTP, FTP

 

HTTP : Hyper Text Transfer Protocol

: 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜

- 기본 메커니즘 : 클라이언트가 서버에게 요청하면, 서버가 응답하는 것

- 클라이언트가 서비스 포트(웹 서버가 프로토콜 서버를 대기시키는 곳, ex | TCP/80 or TCP/8080)에 HTTP요청을 전송하면, 이를 해석하여 적절한 응답을 반환한다.

 

+ ) 네트워크 포트와 서비스 포트

- 포트 : 클라이언트가 서버의 포트에 접근하여 데이터를 내려놓고, 서버가 클라이언트에 보낼 데이터를 실어서 돌려보내는 것

- 네트워크 포트 : 네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소

- 서비스 포트 : 네트워크 포트중에서 특정 서비스가 점유하고 있는 포트

 ⋅ ex | HTTP가 80번 포트를 점유하고 있다면 HTTP의 서비스 포트는 80번 포트가 된다.

- 포트로 데이터를 교환하는 방식은 전송 계층의 프로토콜을 따른다.

 ⋅ TCP : 패킷의 흐름을 관리하고, 데이터가 정확하게 전달되었는지 확인학는 프로토콜

 ⋅ UDP : 전송이 시작될 때, 송/수신 시스템간의 연결을 시도하지 않는 프로토콜

 

HTTP 메시지

: 클라이언트가 전송하는 HTTP요청, 서버가 반환하는 HTTP 응답이 있다.

 

- HTTP 헤드

: 각 줄은 CRLF로 구분되며 첫 줄은 시작줄, 나머지 줄은 헤더라고 부른다. 헤드의 끝은 CRLF 한 줄로 나타낸다.

 ⋅ 필드와 값으로 구성되며 HTTP 메시지 또는 바디의 속성을 나타낸다. 하나의 HTTP 메시지에는 0개 이상의 헤더가 있을 수 있다.

 

- HTTP 바디

: 헤드의 끝을 나타내는 CRLF 뒤, 모든 줄을 말한다. 클라이언트나 서버에게 전송하려는 데이터가 바디에 담긴다.

 

HTTP 요청

: 서버에게 특정 동작을 요구하는 메시지, 서버는 해당 동작이 실현 가능한 지, 클라이언트가 그러한 동작을 요청할 권한이 있는지 등을 검토하고, 적절할 때만 이를 처리한다.

 

- 시작 줄 : HTTP 요청의 시작 줄은 메소드, 요청 URI, 그리고 HTTP 버전으로 구성된다. 각각은 띄어쓰기로 구분한다.

 ⋅ 메소드 : URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작

 ⋅ GET : 리소스를 가져오라는 메소드 

  → 이용자가 브라우저에 웹 서버의 주소를 입력하거나 하이퍼링크를 클릭하면, 새로운 페이지를 렌더링하기 위해 리소스          가 필요한다. 이때 브라우저는 GET 요청을 서버에 전송하여 리소스를 받아온다. 

 ⋅ POST : 리소스로 데이터를 보내라는 메소드

  → 전송할 데이터는 보통 HTTP 바디에 포함된다. 로그인할 때 입력하는 ID와 비밀번호, 게시판에 작성하는 글 등이              POST로 서버에 보내진다.

 

HTTP 응답

: HTTP 요청에 대한 결과를 반환하는 메시지

 ⋅ 요청을 수행했는지, 하지 않았는지, 안했다면 이유는 무엇인지와 같은 상태 정보, 그리고 클라이언트에게 전송할 리소스가 응답에 포함된다.

 

- 시작 줄 : HTTP 응답의 시작줄은 HTTP버전, 상태코드, 그리고 처리 사유로 구성, 각각은 띄어쓰기로 구분

 ⋅ HTTP 버전 : 서버에서 사용하는 HTTP 프로토콜의 버전

 ⋅ 상태코드 : 요청에 대한 처리 결과를 세 자릿수로 나타냄

 ⋅ 처리 사유 : 상태 코드가 발생한 이유를 짧게 기술한 것

 

→ 200 상태코드를 갖는 응답

 

HTTP Request & Response

: 원하는 메소드를 선택하여 요청을 전송하면, 오른쪽에서 전송된 요청 및 응답의 구조를 확인할 수 있다.

 

 

HTTPS (HTTP over Secure socket layer)

: TLS(Transport Layer Security) 프로토콜을 도입하여 평문으로 전달되는 HTTP 응답과 요청을 가로채지 못하도록 함

 ⋅ TLS : 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화, 공격자가 중간에 메시지를 탈취하더라도 이를 해석     하는 것은 불가능하며 결과적으로 HTTP 통신이 도청과 변조로부터 보호된다.

HTTP 메시지는 쉽게 해독이 가능하다

 

HTTPS 메시지는 해석이 불가능하다