| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 리눅스
- 정보보안
- 해킹
- 정보보호
- CTF
- http
- 보안 관제
- Blue Team
- SoC
- THM
- 해커
- 사이버 보안
- web hacking
- OverTheWire
- Cross-Site Scripting
- TryHackMe
- Cyber Security
- IR
- 보안 스터디
- linux
- 해킹 스터디
- Bandit
- 모의해킹
- Web
- 워게임
- cert
- 리눅스 기초
- write-up
- 블루팀
- XSS
- Today
- Total
AnbyMata의 해킹 노트
[THM] HTTP in Detail - EP.1 (Task 1~4) 본문
TryHackMe - "HTTP in Detail". Task 1~4. Write-up!

출처: https://tryhackme.com/room/httpindetail
HTTP in Detail
Learn about how you request content from a web server using the HTTP protocol
tryhackme.com
[1] What is HTTP(S)?
HTTP (HyperText Transfer Protocol)
- 웹 브라우저와 웹 서버가 웹 데이터 (HTML, 이미지, 영상 등)을 주고받기 위해 사용하는 communication protocol (통신 규칙)
- 정리하면, 웹 통신의 기본 규칙
HTTPS (HyperText Transfer Protocol Secure)
- HTTP의 secure version (= HTTP + 보안 계층)
- 현대 웹의 표준
- 전송되는 데이터를 암호화 → 제 3자가 내용을 열람하거나 조작하기 힘듬
- 서버 신원 인증 → 사용자가 진짜 서버와 통신 중임을 보장
정리하면,
- HTTP = 웹 통신의 기본규칙 + 보안 없음
- HTTPS = HTTP + 보안 있음 (암호화 + 인증)
| [보충 설명] HTTP는 1989~1991년에 Tim Berners-Lee와 그의 팀이 만들었습니다. HTTP는 web browser와 web server가 HTML, 이미지, 영상 등을 주고받을 때 사용하는 통신 프로토콜입니다. 결과적으로 인터넷에서 웹사이트에 접속할 때마다 브라우저는 서버에 HTTP Request(요청)을 보내고, 서버는 브라우저에 HTTP Response(응답)으로 데이터를 전달합니다. 하지만, HTTP는 아무런 보안 과정없이 원본 그대로를 노출하고 있기에 해킹에 취약합니다. 그래서 현대에선 HTTPS를 주로 사용합나다. (거의 HTTPS고, 보안이 아예 필요없는 일부 상황에서만 HTTP 사용 중) HTTPS는 데이터를 암호화하고, 서버 인증 과정을 통해 보안성을 높입니다. 다만, 암호화와 인증을 하는 과정으로 인해 HTTP보다 속도는 느립니다. (이론적으로) |
[2] Requests and Responses
[2-1] URL
URL = 인터넷 상의 리소스(resource)에 어떻게 접근할지 알려주는 지침
URL 구성 요소

- Scheme (protocol) = http = 녹색 부분
+ 리소스에 접근할 때 사용할 프로토콜(protocol)
+ 대표 프로토콜) HTTP, HTTPS, FTP (File Transfer Protocol)
- User (사용자, 인증 정보) = anbymata:pw1234 = 주황색 부분
+ username과 password 같이 로그인을 위해 필요한 authenticiation(인증)
+ 요즘엔 보안 상의 문제로 잘 쓰이지 않음
- HOST / DOMAIN (호스트 / 도메인) = anbyhacking.com = 보라색 부분
+ 접근할 서버의 도메인 이름이나 IP 주소
+ 즉, 요청을 보낼 서버의 주소
- Port (포트번호) = 80 = 하늘색 부분
+ 서버 내부에서 연결할 통신 포트
+ 기본포트 : HTTP = 80 / HTTPS = 443 / FTP = 21
+ 범위: 1 ~ 65535
- Path (경로) = mainpage = 빨간색 부분
+ 서버 내에서 접근할 리소스의 위치
- Query String (퀴리 문자열) = ?id=00 = 파란색 부분
+ '?' 로 시작하는 부분
+ 서버에 전달할 추가 데이터
- Fragment (프래그먼트, 앵커태크) = #case6 = 갈색 부분
+ '#'으로 시작하는 부분
+ 페이지 내부의 특정 위치를 가리키는 reference(참조)
+ 긴 페이지에서 특정 부분을 바로 보여줌
| [보충 설명] Scheme에 적힌 프로토콜을 사용해 (HTTP, HTTPS, FTP) User에 적힌 인증 정보를 활용해 로그인하여 (요새는 보안상 거의 없음) Host/Domain에 적힌 서버의 Port에 적힌 포트번호로 연결해서 Path에 적힌 리소스에 접근합니다. Query String은 서버에 전달되는 추가적인 요청 정보이며, Fragment는 서버 요청과는 무관하게 페이지 내부의 특정 위치를 표시합니다. |
[2-2] Request 예시
GET / HTTP/1.1
Host: anbymata.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://anbymata.com/
- HTTP 1.1 버전을 사용하여 서버의 root 경로 홈 페이지 ( / )를 GET 메서드로 요청함
- Host = 요청 대상 서버의 도메인 이름은 "anbymata.com"
- User-Agent = 요청을 보낸 Client는 Firefox 87 브라우저
- Referer = 사용자가 현재 요청을 보재기 전에 있는 페이지는 "https://anbymata.com/"
| [보충 설명] Firefox 87 브라우저가 HTTP/1.1 방식으로 anbymata.com 서버의 홈 페이지를 요청했으며, "anbymata.com"라는 같은 사이트의 페이지에서 이동해 온 요청입니다. |
[2-3] Response 예시
HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Tue, 13 Jan 2026 17:21:16 GMT
Content-Type: text/html
Content-Length: 103
<html>
<head>
<title>AnbyMata</title>
</head>
<body>
Let's Study Hacking
</body>
</html>
- HTTP 1.1 버전으로 요청을 처리함
- 200 OK = 요청이 정상적으로 성공함
- Server = 요청을 처리한 웹 서버는 nginx 1.15.8 버전
- Date = 응답이 생성된 서버 기준 시간 (GMT)은 2026.01.13 화요일 17시 21분 16초
- Content-Type = 데이터의 형식은 HTML 문서
- Content-Length = response(본문)의 크기는 98 byte
- <html>과 </html> 사이의 내용이 HTML 문서 내용임
[3] HTTP Methods
HTTP Methods
= Client가 HTTP Request(요청)을 보낼 때, 어떤 동작을 의도하는지 서버에 알려줌
[3-1] 자주 사용되는 HTTP Methods(메서드)
- GET Request = 웹 서버로부터 정보를 가져옴
- POST Request = 웹 서버에 데이터를 보냄 or 새로운 데이터나 레코드 생성
- PUT Request = 웹 서버의 기존 정보를 수정/업데이트
- DELETE Request = 웹 서버의 정보나 레코드를 삭제
[4] HTTP Status Codes
HTTP Status Code
- HTTP Response의 첫 줄에 포함됨
- Client에게 요청 결과와 처리 방법을 알려줌
[4-1] HTTP Status Code 범위(range)
100~199 : Information Response (정보 응답)
- Request(요청)의 첫 단계가 수락됨
- 나머지 요청을 계속 보내도 된다는 뜻
- 현재는 거의 사용하지 않음
200~299 : Success (성공)
- Client의 request가 성공적으로 처리됨
300~399 : Redirection (리다이렉션)
- Request를 다른 리소스로 이동시킴
- 다른 페이지나 다른 웹사이트로 이동될 수도 있음
400~499 : Client Errors (클라이언트 오류)
- Request 자체에 문제가 있음
500~599 : Server Errors (서버 오류)
- 서버 내부에서 오류가 발생함
- 보통 서버 처리 과정에서 심각한 문제가 발생함을 뜻함
| [보충 설명] 300~399 - Redirection의 경우, 요청한 리소스가 여기 말고 다른 곳에 있다고 알려줍니다. 그 정보를 바탕으로 Client는 서버의 지시에 따라 자동으로 다른 URL로 다시 요청을 보냅니다. 400~499 - Client Errors의 예시로는, 애초에 없는 리소스 요청하기 / 인증 필요 / 요청 형식이 틀림 / 접근 권한 없음 / 메서드 오류 등이 있습니다. 500~599 - Server Errors의 예시로는, 예외처리가 잘못된 코드 / 통신 실패 / 서버가 다운되거나 점검 중 / 응답 지연 등이 있습니다. |
[4-2] 자주 사용되는 HTTP Status Codes
200 - OK
→ 요청이 정상적으로 성공함
201 - Created
→ 새로운 리소스 생성 (사용자, 게시글)
301 - Moved Permanently
→ 요청한 페이지가 영구적으로 다른 위치로 이동함을 의미
→ 새 주소로 redirect하거나 페이지 위치 변경을 알림
302 - Found
→ 요청한 페이지가 일시적으로 다른 위치로 이동함을 의미
→ 향후 다시 변경될 수 있음
400 - Bad Request
→ 요청에 문제가 있거나 필수 정보가 누락됨
401 - Not Authorised
→ 인증되지 않은 상태 = 로그인 필요
403 - Forbidden
→ 로그인 여부와 상관없이 접근 권한이 없음
404 - Page Not Found
→ 요청한 페이지나 리소스가 존재하지 않음
500 - Internal Server Error
→ 서버의 요청 처리 과정 중 알 수 없는 오류 발생
503 - Service Unavailable
→ 서버 다운이나 점검 등의 문제로 요청을 처리할 수 없음
[TryHackMe] HTTP in Detail - EP.1 (Task 1~4). END.
[TryHackMe] HTTP in Detail - EP.2 (Task 5~7) 完. Continue...
https://anbymata.tistory.com/40
[THM] HTTP in Detail - EP.2 (Task 5~7)
TryHackMe - "HTTP in Detail". Task 5~7. Write-up + Extra Study!출처: https://tryhackme.com/room/httpindetail HTTP in DetailLearn about how you request content from a web server using the HTTP protocoltryhackme.com [5] HeadersHeaders = 웹 서버에 reque
anbymata.tistory.com
'TryHackMe > Web & Networks 기초' 카테고리의 다른 글
| [THM] Web Application Basics - EP.2 (Task 5~6) (1) | 2026.01.21 |
|---|---|
| [THM] Web Application Basics - EP.1 (Task 1~4) (1) | 2026.01.20 |
| [THM] HTTP in Detail - EP.2 (Task 5~7). 完 (0) | 2026.01.14 |
| [THM] DNS in Detail - EP.2 (Task 4~5). 完 (0) | 2026.01.07 |
| [THM] DNS in Detail - EP.1 (Task 1~3) (1) | 2026.01.06 |