STUDY.md
  • 웹 해킹 (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 웹해킹 입문

     

    Web Hacking

    웹 해킹을 공부하기 위한 로드맵입니다.

    dreamhack.io

     

     

     

    댓글