- 웹 해킹 (Web Hacking). Web, URL, HTTP, nslookup 실습2024년 06월 24일 23시 17분 28초에 업로드 된 글입니다.작성자: 방세연
Web 이란?
HTTP를 이용해 정보를 공유하는 서비스
웹 클라이언트와 서비의 통신을 통해 웹 서비스에 통신할 수 있음.
수립 과정
1. 요청] 클라이언트 (웹 서버에 접속, 이용자의 요청 해석, HTTP-> 서버에 리소스 요청) ->
2. 응답] 서버 (HTTP 요청 해석, 내부적인 연산 처리, HTTP -> 이용자에게 전달) ->
3. 클라이언트 ( 응답받은 HTML, CSS, JS를 시각화 함 )
프로토콜 (Protocol)
규격화된 일련의 규칙. with Syntax.
( 프로토콜의 종류 : HTTP, TCP/IP, FTP ... )
Web Browser.
UX를 제공하는 소프트웨어 중 일종 .
서버와 HTTP 통신을 대신하며, 수신한 리소스를 시각화한다.
Web Rendering.
서버로부터 받은 리소스를 이용자에게 시각화한다.
(사파리 : 웹킷(Webkit), 크롬: 블링크(Blink), 파이어폭스: 개코(Gecko) )
프론트엔드
이용자의 요청을 받는 부분
웹 리소스 (Web Resource) :
페이지가 보여주고 있는 정보들이 명시된다.HTML 태그와 속성을 통한 구조화된 문서 작성 지원 CSS 웹 문서의 생김새 지정. 글자의 색, 모양, 이미지 크기, 위치 등.. JavaScript (JS) 웹 문서의 동작을 정의 (어디로 반응, 전송할지를 결정..) 백엔드
요청을 처리하는 부분
웹 리소스
http:// spacefriend.tistory.com /index.html
공간 : http:// spacefriend.tistory.com
경로/리소스 : /index.html
HTTP
클라이언트와 서버의 데이터 교환을 응답과 요청 형식으로 정의한 프로토콜.
Network Port. 서버와 클라이언트가 정보를 교환하는 추상화된 장소. Service Port. HTTP/80 포트를 사용한다고 했을 때 80에 해당하는 숫자. 특정 서비스가 점유 중 전송계층의 프로토콜. TCP, UDP 등의 포트를 통해 데이터를 교환하는 방식/규칙 HTTP요청
:서버에게 특정 동작 요구시작줄 :
1. 메소드(Method) : 서버가 수행하길 바라는 동작 (GET, POST ...)
2. 요청(URI) : 메소드의 대상
3. HTTP버전 : 클라이언트가 사용하는 HTTP 프로토콜 버전
헤더 : 요청에 대한 메타정보 제공
바디 : (생략 가능) 요청 데이터, (POST, PUT 같은 메서드에서 주로 사용)HTTP 응답
: 요청에 대한 결과 반환시작줄 :
1. HTTP 버전 : 서버에서 사용하는 HTTP 프로토콜 버전
2. 상태 코드 (Status Code): (세자릿수) 요청에 대한 처리 결과
3. 처리 사유: 상태 코드 발생 이유 서술(1xx ~ 5xx)
헤더 : 응답에 대한 메타정보 제공
바디 : 응답 데이터 ( HTML, JSON ... )HTTP의 요청과 응답에는 시작줄, 헤더, 바디가 표시된다.
예시를 통해 응답 메세지 코드를 확인해보자.
시작 줄.
HTTP/1.1 200 OK
- HTTP/1.1: HTTP 버전
- 200: 상태 코드 (200은 성공을 의미)
- OK: 상태 메시지
헤더 (Header).
Date: Mon, 24 Jun 2024 12:34:56 GMT Server: Apache/2.4.41 (Ubuntu) Content-Type: application/json Content-Length: 67
- Date: 응답이 생성된 날짜와 시간
- Server: 서버 소프트웨어 정보
- Content-Type: 응답 본문의 MIME 타입 (application/json은 JSON 형식을 반환)
- Content-Length: 응답 본문의 길이 (바이트 단위)
바디(Body).
{ "status": "success", "data": { "id": 123, "name": "Example Data" } }
- 실제 응답 데이터, 이 경우 JSON 형식의 데이터
- CRLF 뒤의 모든 줄, 클라이언트나 서버에게 전송하려는 데이터
URL
URL은 scheme, Authority, Path, Query, Fragment 등으로 구성된다.
스킴 (Scheme) 형식: http, https, ftp, mailto 등
사용자가 리소스에 접근하는 방법사용자 정보 (User Info) 형식: username:password
사용자 이름과 비밀번호를 포함하여 호스트에 인증 정보를 제공호스트 (Host) 형식: 도메인 이름이나 IP 주소
리소스를 호스팅하는 서버의 주소Domain name:
사람이 식별할 수 있도록 IP 대신에 사용
IP Address:
장치 식별 위함 (불규칙적)포트 (Port) 형식: 숫자
서버의 특정 서비스를 식별하는 번호 (HTTP=80, HTTPS=443)경로 (Path) 형식: /path/to/resource
서버 내 리소스의 위치를 지정쿼리 (Query) 형식: ?key1=value1&key2=value2
요청 파라미터를 포함하며, 서버에 전달할 추가 정보를 제공 (&로 구성된 키-값 쌍의 형태)프래그먼트 (Fragment) 형식:#fragment
리소스 내 특정 부분을 가리키며, HTML 문서의 특정 위치로 이동할 때 사용DNS (Domain Name Server) : Host의 도메인 네임을 IP로 변환하거나, IP를 도메인 네임으로 변환한다.
실습. nslookup 명령어를 통해 Domain Name에 대한 정보를 알아낸다.
원하는 도메인 네임에 할당된 ip주소 정보를 확인할 수 있다.
Non-authoritative answer: 을 통해 도메인 네임이 응답을 받을 수 없는 상태라면 -type=ns 옵션을 추가하여 권이있는 ns 서버를 알 수 있다.
요즘 웹 브라우저 기반으로 서버를 구축한 게임인 포켓로그에 빠져서 검색을 해봤는데(..)
cloudflare라는 ns서버를 사용하고 있음을 알 수 있었다.
신기하군....
URI에 대한 정보를 확인할 수 있는 링크
https://datatracker.ietf.org/doc/html/rfc3986
💡스터디 참고 : Dreamhack 웹해킹 입문
다음글이 없습니다.이전글이 없습니다.댓글