https://dreamhack.io/learn/1/6#7
로그인 | DreamHack
로그인 자동 로그인 비밀번호 찾기 로그인 드림핵이 처음이신가요? 회원가입
dreamhack.io
2강 <웹 기초 지식>
[
Web Browser (웹 브라우저)
웹에 접속하기 위해 사용하는 소프트웨어이다.
· Web Resource
웹 상에 존재하는 모든 콘텐츠이다. (HTML, CSS, JS, PDF, PNG 등)
· URI (URL)
URI는 Uniform Resource Identifier의 약자로 리소스를 식별하기 위한 식별자이다.
· HTTP (HyperText Transfer Protocol)
인터넷 서비스에서는 서비스 대상 간 통신 규약(Protocol)을 지정하여 통신한다.
HTTP는 웹을 이용하기 위한 통신 규약이다.
· HTTPS (HyperText Transfer Protocol Secure)
기존 HTTP 데이터를 암호화하여 통신한다.
· Cookie
웹 브라우저에 저장하는 데이터이다.
· Session
서버에 저장하는 데이터이다.
· Domain Name
인터넷(웹) 네트워크상에서 컴퓨터를 식별하는 이름이다. (e.g. www.naver.com은 네이버의 서버 컴퓨터를 식별하는 이름이다.)
· Server
서버는 인터넷상에서 사용자에게 서비스를 제공하는 컴퓨터이다.
그 중 웹 서버는 사용자(웹브라우저)와 HTTP를 이용하여 통신하는 서버이다.
· Application
서버에서 설정한 특정 기능들을 수행하는 소프트웨어이다.
· DataBase (DB)
데이터를 저장하기 위해 사용하는 데이터 저장소이다.
]
웹 기초 지식을 배우기 위한 키워드들이다.
웹 브라우저와 웹 서버가 데이터를 주고받는 과정의 원리 및 기술을 단계별로 알아보자.
Web Broswer
웹 브라우저는 HTTP를 통해 인터넷 상에서 통신을 하면서, 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자가 웹을 사용할 수 있도록 도와주는 소프트웨어이다.
우리가 흔히 아는 Chrome, FireFox, Edge, Safari 등이 그 예시이다. 이들은 HTML/CSS/JS 해석 및 실행의 속도, 혹은 디바이스 동기화 기능 등에 차별화를 둬 마케팅한다
[ HTML (Hyper Text Markup Language)
웹 문서의 뼈대를 구축하기 위한 마크업 언어이다.
정해진 태그와 속성을 지정하여 문서를 구성한다.
· CSS (Cascading Style Sheets)
HTML이 표시되는 방법을 정의하는 스타일 시트 언어이다.
이미지, 태그, 글자 등 다양한 웹 리소스들의 출력 시 스타일을 설정한다.
· JS (JavaScript)
HTML과 CSS는 화면에 출력되는 뼈대를 그리는 것이며, JS와 같은 Client Side Script를 이용하여 페이지 내에서의 행위들을 설정할 수 있다 ]
이들은 나중에 Web Resource 개념을 배울 때 다시 등장하지만, 웹 브라우저를 통해 보게 되는 페이지를 구성하는 대표적인 웹 리소스
들이다.
웹을 사용할 수 있는 3가지 방법에 대해 소개해보면 첫번째로 nc 또는 telnet과 같은 네트워크 프로그램이다. 그리고 CLI 프로그램 (curl, wget 등), 그리고 웹 브라우저가 있다.
Web Resource
웹에서 사용하는 콘텐츠를 의미한다.
이게 html로 웹 페이지를 구성하기 위해 만든 코드이고,
이게 css로 만든 코드,
이게 js로 만든 코드라고 한다.
지금은 외계 문자 같지만 언젠가는 다 이해할 날이 올 것이라 믿는다.
URI(Unifrom Resource Identifier)
리소스를 식별하기 위한 식별자이며, 우리에게 친숙한 URL은 리소스의 위치를 식별하기 위한 URI의 하위 개념이다.
URI의 구성요소를 하나씩 짚어보겠다.
Scheme
웹 서버에 접속할 때 어떤 체계(프로토콜)를 이용할지에 대한 정보를 담고 있다.
Host
Authority의 일부로써 접속할 웹 서버의 호스트(서버 주소)에 대한 정보를 가지고 있다.
Port
Authority의 일부로써 접속할 웹 서버의 포트에 대한 정보를 가지고 있다.
Path
접속할 웹 서버의 경로에 대한 정보를 가지고 있으며 /로 구분된다.
Query
웹 서버에 전달하는 파라미터 (추가적인 정보)이며 URI에서 ? 뒤에 붙는다.
Fragment
메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보를 담고 있으며 URI에서 # 뒤에 붙는다.
http://example.com/path?search=1#fragment
다음은 URI의 한 예시이고, 색깔별로 구성요소를 분류해보았으니 하나하나 따져보면 되겠다.
Encoding
문자 또는 기호 등의 정보, 형태를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 의미한다. 그리고 다시 원래 형태로 변경하는 것을 Decoding이라고 한다.
Encoding (인코딩) : 알고리즘이 모두 공개되어 있고 키와 같은 요소가 포함되어 있지 않아서 모두가 원래의 정보로 복원이 가능합니다.
Encryption (인크립션) : 양방향 암호 알고리즘입니다. 일치한 알고리즘과 유효한 키를 가지고 있다면 원래의 정보로 복원이 가능합니다.
웹에서는 URL과 HTML Entity 인코딩이 대표적이다.
· URL Encoding
URL 구조 내에서 예약어로 사용되는 문자들을 전송하고자 할 때 사용한다. 입력된 문자를 ASCII 테이블에서 매칭되는 Hex 값에 %를 앞에 붙여 인코딩한다.
· HTML entitiy Encoding
문자열들이 HTML에서 사용되는 태그들의 문자로 인식되지 않도록 하기 위해 사용한다. 인코딩 방식은 URL Encoding과 비슷하며 주요한 문자들에 대해서 지정되어 있는 Entity name을 사용하여 인코딩할 수 도 있다.
HTTP
URI의 Scheme Protocol 에 해당한다. HTTPS와 더불어 웹에서 이루어지는 통신을 정의한 프로토콜이다.
- HTTP Request 는 서버에 대한 요청을 의미한다. Request의 구성요소는 다음과 같다.
Method
서버에 요청 시 수행하고자 하는 동작을 나타냅니다.
Path
사용자가 서버에 요청하는 웹 리소스의 경로입니다.
Version
HTTP의 버전을 나타냅니다.
Header
서버에 추가 정보를 전달하는 데이터 부분입니다. 사용자가 입력한 데이터를 전달하기 위한 부분보다는 사용자와 서버가 상호작용하기 위한 정보를 담는 부분으로 사용됩니다.
e.g. 사용자 데이터의 처리 방식 및 형식에 대한 정보, 서버에서 사용자를 식별하기 위한 쿠키 정보 등
Body
사용자가 입력한 데이터가 서버에 전달 시 데이터를 담는 부분입니다.
- HTTP Response는 사용자의 요청에 대한 서버의 응답을 의미한다. Response의 구성요소는 다음과 같다.
Version
HTTP의 버전을 나타냅니다.
Status code
사용자의 요청에 대한 서버의 처리 결과를 나타냅니다.
Header
사용자와 상호작용하기 위한 데이터를 담는 부분으로 사용됩니다.
e.g. 사용자(웹 브라우저)에서 서버의 응답 데이터를 처리하는 방식 및 형식에 대한 정보, 서버에서 사용자를 식별하기 위한 쿠키 발급 정보 등
Body
서버가 사용자에게 응답하는 데이터를 담는 부분입니다.
Cookie
HTTP의 두 가지 속성을 소개하겠다.
- connectionless 속성 : 서버 부하를 방지하기 위해 Request와 Response를 하나씩 수행한 후 네트워크 연결을 끝맺는 것이다.
- stateless 속성 : 네트워크가 연결을 끝맺을 때 상태를 유지하지 않는 것이다.
이러한 속성 탓에 HTTP 요청마다 새로운 커넥션을 열어야하는 단점이 있다.
따라서 상태를 유지하기 위해 Cookie라는 개념이 등장하였으며 웹 브라우저는 HTTP Response의 Set-cookie Header나 Javascript를 통해 데이터를 쿠키에 저장한다.
Session
서버에 데이터를 저장하기 위해 사용한다. 사용자가 임의 사용자로 인증된 것처럼 요청을 조작할 수 있기 때문이다. 데이터를 서버에 저장, 해당 데이터에 접근할 수 있는 랜덤 문자열 키가 생성된다. 이를 통해 서버가 응답할 수 있게 되며, 브라우저는 이 키를 쿠키에 저장하고 이후에 HTTP 요청이 있으면 서버에서 해당 키에 대응하는 데이터를 가져와 인증 상태를 확인한다.
Domain Name/Host Name
Host는 URI 구성 요소 중 웹 브라우저가 어디에 연결할지 정하게 한다. Domain Name을 이용해 Host를 조회할 때는 Domain Name과 IP Adress 정보를 매핑해 저장하는 Domain Name Server(DNS)에서 조회해 등록된 IP Address를 가져와 사용한다.
3강 <웹 해킹 개요>
본래 의도와 다른 동작을 일으키고, 주어진 권한 이상으로 정보를 사용하는 행위가 웹에서 일어나는 것을 웹 해킹이라고 한다. 특정 웹 사이트에 접근할 때의 과정은 두 가지로 나뉘는데, 이 것이 웹 해킹을 할 때 공격 대상이 되어 웹 해킹 방식은 Client-Side(서비스 사용자에 대한 공격), Server-side(서버에 대한 공격) 이렇게 두 가지로 나뉠 수 있다.
'Other > Web Hacking' 카테고리의 다른 글
IGRUS 웹해킹 4주차 과제 #PHP #워게임 (0) | 2021.01.28 |
---|---|
IGRUS 웹해킹 3주차 과제 #워게임 (0) | 2021.01.28 |
IGRUS 웹해킹 2주차 과제 #워게임 (0) | 2021.01.27 |
웹 해킹 멘토링 과제 #PHP (0) | 2021.01.27 |
웹 해킹 멘토링 과제 #HTML (0) | 2021.01.27 |