EYEN

[드림핵 웹 해킹] STAGE 1,2: WEB HACKING 배경지식 (1) 본문

Wargame/Web

[드림핵 웹 해킹] STAGE 1,2: WEB HACKING 배경지식 (1)

EYEN 2022. 10. 31. 10:33

클라이언트가 웹에게 특정 리소스를 지정해서 달라고 하면

서버가 요청을 이해(뭘 이해해)하고 대응되는 동작을 해서 클라이언트에게 리소스를 반환한다.

여기서 클라이언트의 행위를 요청(Request), 서버의 행위를 응답(Response)라고 한다.

이 요청과 응답에 정해진 법칙을 프로토콜이라고 하고, 프로토콜은 주고받는 리소스의 해석을 위한 문법도 포함하고 있다.

웹 서버는 HTTP서버(http 프로토콜이 적용되는 서버)를 HTTP 서비스 포트에 대기시킨다. 이 포트는 TCP/80 또는 TCP/8080 이다

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

*서비스 포트: 네트워크 포트 중 특정 서비스가 점유하고 있는 포트, http가 80번 포트를 점유하고 있다면 http의 서비스 포트는 80번 포트

포트의 개수는 운영체제에서 정의하기 나름이다. 하지만 현대의 윈도우나 리눅스, 맥 운영체제는 0번부터 65535번까지의 네트워크 포트를 사용한다.

포트 중 0번부터 1023번 포트는 잘 알려진 포트 또는 특권 포트라고 하여 이 대역의 포트에서 서비스를 실행하려면 관리자 권한이 필요하다. ssh-22번 포트 http-80번 포트 https-443번 포트가 그 예이다.

HTTP 메시지에는 클라이언트가 전송하는 http 요청, 그리고 서버가 반환하는 http 응답이 있고, http 헤드와 http바디로 구성된다는 공통점이 있다.

http헤드의 각 줄은 CRLF로 구분되고 첫 줄은 시작줄(start-line), 나머지 줄은 헤더(header)라고 부른다. 헤드의 끝은 CRLF 한 줄로 나타낸다.

메소드는 URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타낸다. 요청 URI는 메소드의 대상이다.

get은 리소스를 가져오라는 뜻. 메소드 이용자가 브라우저에 웹 서버의 주소를 입력하거나 하이퍼링크를 클릭하면, 새로운 페이지를 렌더링(?)하기 위해 리소스가 필요하다 그래서 브라우저가 get요청을 서버에 전송하여 리소스를 받아온다.

post는 리소스로 데이터를 보내라는 메소드이다. 로그인 시 id pw 게시판에 작성하는 글이 post로 서버에 보내진다.

프론트는 get이고 백은 post인가?- 아니다.

헤더는 필드와 값으로 구성되며 http메시지 또는 바디의 속성을 나타낸다.