Web 해킹에 대하여.. (드림핵 웹해킹 1,2강 Web hacking introduction, Background)

화승이·2022년 3월 17일
0

웹해킹 공부

목록 보기
1/2
  • 잠시 자격증 시험 준비에 밀렸던 과제를 열심히 하느라, 한 2일정도 공부했던 부분을 기록을 하지 못했다. 그래서 오늘은 하루에 한 강의씩 공부했던 부분, (드림핵)이라는 플랫폼을 활용해서 여러개를 동시에 공부하려고 하는데, 벽을 느끼기 전까지는 웹해킹을 먼저 시작해보려고 한다. 그 시작에 있어 공부한 부분의 요약이다.

인코딩(Encoding) 표준
대표적으로 아스키(Ascii)와 유니코드(Unicode)가 있다.
아스키는 7비트 데이터에 대한 인코딩 표준이다.
유니코드에서 한 문자는 최대 32개의 비트로 표현된다.(대략 42억개)
최근에는 한글, 한자, 히라가나, 가타카나, 알파벳과 같은 문자 외에 다른 각종 이모지들도 유니코드에 포함되고 있다.


웹 기본 상식

웹 통신에 쓰이는 HTTP, HTTPS 에 대하여

프로토콜이란? ( protocol)
규격화된 상호작용에 적용되는 약속
컴퓨터 통신 프로토콜은 각 통신 주체가 교환하는 데이터를 명확히 해석하도록 문법(syntax)를 포함. 문법에 어긋날 시, 잘못 전송된 것으로 인식하여 취급을 무시함.

HTTP

[HTTP] (Hyper Text Transfer Protocol 의 약자)

  • HTTP란 서버와 클라이언트의 데이터 교환을 요청(Request)과 응답(Response) 형식으로 정의한 프로토콜이다.
  • HTTP의 기본 메커니즘은 클라이언트가 서버에게 요청하면, 서버가 응답하는 것.
    * HTTP 서비스 포트에 대기 - 주로 TCP/80 or TCP/8080

네트워크 포트 Vs 서비스 포트
네트워크 포트란 네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소
서비스 포트란 네트워크 포트 중에서 특정 서비스가 점유하고 있는 포트

[HTTP 메시지]

  • HTTP 헤드
    HTTP 헤드의 각 줄은 CRLF로 구분. 첫 줄은 시작 줄(Start-line), 나머지 줄은 헤더(Header)라고 부른다. 헤드의 끝은 CRLF 한 줄로 나타낼 수 있다. 헤더는 필드의 값으로 구성되어있고, HTTP 메시지 또는 바디의 속성을 나타낸다.

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


    [HTTP 요청과 HTTP 응답]

  • HTTP 요청
    서버에게 특정 동작을 요구하는 메시지

    (시작줄)
    메소드(Method), 요청 URI(Request-URI), 그리고 HTTP 버전으로 구성
    (띄어쓰기로 구분)
    메소드: URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타냄>

    • GET : 리소스를 가져오라는 메소드
    • POST : 리소스로 데이터를 보내라는 메소드
      요청 URI : 메소드의 대상
      HTTP 버전 : 클라이언트가 사용하는 HTTP 프로토콜의 버전

(자세한 내용을 알고 싶을때, https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
이 링크를 참고하면 된다.)

(다음은 HTTP 요청, 밑에서 하는 응답과 관련된 부분을 그림으로 나타냈을때의 모습이다.)

  • HTTP 응답
    HTTP 요청에 대한 결과를 반환하는 메시지 . 상태 정보(Status), 클라이언트에게 전송할 리소스

    (시작줄)
    HTTP 버전, 상태 코드(Status Code), 처리 사유(Reason Phrase)
    (띄어쓰기로 구분)

    • (HTTP 버전) 서버에서 사용하는 HTTP 프로토콜의 버전
    • (상태 코드) 요청에 대한 처리 결과를 세 자릿수로 나타냄.

(다음 그림은 HTTP 응답의 상태코드에 앞자리가 바뀔때 무엇을 나타내는지와 관련된 표이다. )


HTTPS

  • 등장하게 된 배경
    TLS(Transport Layer Security) 프로토콜을 도입하여 공격자가 중간에 가로채 이용자의 계정 탈취 문제가 생김.

    TLS : 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화

  • HTTP와 HTTPS의 비교방법
    웹 서버의 URL이 http://로 시작되면 HTTP, https://로 시작되면 HTTPS 프로토콜을 사용한다.



인터넷이라는 통신망을 활용해 구현된 전 지구적 정보 공간

  • 웹 서비스
    프로트엔드 (Front-end) : 이용자의 요청을 받는 부분
    백엔드 (Back-end) : 이용자의 요청을 처리하는 부분

  • 웹 리소스

    1) HTML (Hyper Text Markup Language) : 웹 문서에서 태그와 속성을 통한 구조화된 문서 작성을 지원함.
    2) CSS (Cascading Style Sheets) : 웹 문서의 생김새를 지정, 글자의 색, 모양, 배경, 이미지의 크기나 위치 등을 지정 가능
    3) JS (JavaScript) : 웹 문서의 동작을 정의


웹 브라우저

HTTP/S 로 이용자와 웹 서버의 통신을 중개, 서버로부터 받은 다양한 웹 리소스들을 가공해 효과적으로 전달함. 이요아자가 다양한 프로토콜을 알지 못해도 쉽게 사용하도록 도와줌.

URL

Uniform Resource Locator 의 약자
(URL의 구조)
구조 : Scheme, Authority (User info, Host, Port), Path, Query, Fragment

웹에 있는 리소스의 위치를 표현하는 문자열
(브라우저는 URL을 통해 서버에게 요청함.)

  • Domain Name
    URL 중 Host의 도메인 이름을 IP로 변환하거나 IP를 도메인 이름으로 변환한다.
  • 웹 렌더링
    서버로부터 받은 리소스를 이용자에게 시각화하는 행위를 말한다.

브라우저 개발자 도구 (Devtools)

  • 요소 검사 (Inspect) : 특정 요소의 개괄적인 정보를 파악하고, 이와 관련된 코드를 쉽게 찾을 수 있다.

  • 디바이스 툴바 : 활용해 브라우저의 화면 비율, User-Agent를 원하는 값으로 변경 가능

  • Elements : 현재 페이지를 구성하는 HTML 코드를 읽을 수 있다.
    HTML 수정 : 코드를 선택한 상태로 F2를 누르거나 더블 클릭하여 수정 가능. 편리함

  • Console : 프론트엔드의 자바스크립트 코드에서 발생한 메세지를 출력, 이용자가 입력한 자바스크립트 코드 실행

  • Sources : 현재 페이지 구성하는 웹 리소스들을 확인
    Sources: Debug : 원하는 자바스크립트 디버깅도 가능

  • Network : 서버와 오가는 데이터를 확인할 수 있음. (복사 기능 존재)

  • Application : 쿠키, 캐시 , 이미지, 폰트, 스타일시트 등 App 관련 리소스 조회 가능
    Cookies에서는 브라우저에 저장된 쿠키 정보 확인, 수정 가능

(요약본 사진)


다음 장은 쿠키와 세션에 대하여 공부해서 기록하도록 하겠다.

profile
이제부터 하고싶은것만 하면서 살거야

0개의 댓글