본문 바로가기
Web Hacking

1. 웹의 구조 및 HTTP

by 귀멸 2022. 6. 11.

웹에 관련한 기초 지식을 쌓고 간다.

웹 쪽은 공부한 기반이 없어서 기초 수업이 반갑다.

그러고보면 기반이 없지는 않다.

초등학교 때 방과 후 수업으로 HTML관련 공부를 했던 기억이난다. (내용은 기억 안나지만)

IMF로 난리인데 그 와중에 IT 강국으로 도약하겠다고 전용선깔리기 시작하고 했던 시절

학교에서도 방과 후 수업을 IT관련한 것으로 많이 열었었다.

뭔지도 모르고 컴퓨터로 게임 할 생각에 수업들었던 기억이 어렴풋이 떠오른다.

xp를 보니까 그 시절 정말 열심히 했었던 게임들도 떠오르고 파랑새가 집에 있는 줄 이제 알았다니!!

 

0. 웹의 구조

 


 Client : 서버에 웹브라우저를 통해 웹 서비스 요청(Requests)
 1차 방화벽  : 포트에 맞는 패킷만 통과시킬 수 있도록
 2차 web 방화벽  : XSS, injection 등의 공격용 패킷을 차단하기 위해
 Web Server : 요청에 대한 응답(Response) (IIS, Apache, Netscape)


------------------------------ 이 단계까지가 정적인 방식 (기초 웹) ------------------------------------


 정해져 있는 웹페이지를 주는 것만 아니라 사용자의 입력에 따라 동적인 페이지를 제공하기 위해

 WAS(Web Application Service - DB에 쿼리문 전달(ASP, PHP, ISP)) 
 Web Server가 DB에 정보를 요청하는 것(질의) SQL(Query)
+ DB(MS-SQL, MySQL, Oracle) 이 Backend에 추가됨

 Python jango / wordpress 웹서버 ~ DB까지를 쉽게 만들 수 있게 나온 기술

 

위의 주소에서 의미를 읽을 수 있어야 한다.

http://www.aegisone.co.kr/showtable.asp?page=1&name=nano

http 프로토콜로 전송되어 aegisone.co.kr의 도메인 네임을 가지고

showtable.asp WAS로 ?부터는 쿼리문 page=1   &  name=nano의

조건을 가지는 페이지를 불러온다는 의미이다.

 

1. HTTP (Hyper Text Transfer Protocol)

   1) Hyper Text : 비순차적인 검색이 가능한 Text

                           링크를 통해서 원하는 Text Page로 이동

   

   2)  HTTP Packet Layout

 Ethernet IP  TCP  HTTP Data
             상호간 신뢰성 확인(3-Way Handshaking)

 Packet 분석 - Wireshark (Packet 읽는 연습)

- Request packet 분석
Request Line  GET / HTTP/1.1\r\n
요청방식(Method) / url 원래는 주소가 나오지만 없다면 header에 host에 요청 / 버전 / 개행(\r\n)    
 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/x-shockwave-flash, */*\r\n
             */* (모든형식을 뜻함), q 파라미터는 우선 순위를 뜻함
Accept-Language: ko\r\n
Header Accept-Encoding: gzip, deflate\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n
(웹브라우저 정보)
Host: 192.168.1.20\r\n
Connection: Keep-Alive\r\n
Blank \r\n

Body
(Body 부 내용이 없음)

- Response Packet 분석

 

Status Line  HTTP/1.1 200 OK\r\n
                200 (상태 코드 : 정상) / 404 (Not Found)
Server: Microsoft-IIS/5.0\r\n
(어떤 웹서버를 쓰고 있는가 및 버전)
Date: Wed, 08 Jun 2022 05:40:38 GMT\r\n
Header Content-Length: 865\r\n
(Body Contents 길이)
Content-Type: text/html\r\n
Set-Cookie: ASPSESSIONIDASRDRDBA=KANNGPAAHGLGEDBPHMJGOLFO; path=/\r\n
(Cookie 관련 된 것 나중에 볼 것)
Cache-control: private\r\n
(Cache의 사용 여부, 종류)

 Blank \r\n
 Body Line-based text data: text/html

 

와이어샤크는 현직에서 많이 쓰는 툴이므로 따로 사용법 및 패킷을 읽어내는 방법에 대해서

심도 있게 공부 할 필요가 있다.

 

 3) TCP 기반의 프로토콜 - 3way Handshaking 선행
 4) TCP 기반의 프로토콜임에도 
    Stateless 방식 - client 요청에 따른 server 응답이 완료되면 session이 끊어짐
    server는 무수히 많은 client의 요청을 처리해야하기 때문
 * cookie - 지속적인 연결이 필요한 서비스에서 사용하기 위한 기능

 5) HTTP의 버전
     HTTP 1.1 추가된 사항
     - 지속적인 연결
 6) HTTP Request / Response 구조

 7) HTTP Request
    Method - get, post, options

 

2. Web Language

 

https://archive.org/ 과거 웹사이트 모습을 확인하고 소스를 볼 수 있다
WEB Language (PHP, JSP) 따로 공부할 것

HTML (Hypertext Markup Language)
HTML은 태그를 사용
HTML의 한계
 - 링크 메커니즘을 약하다 
 - HTML은 데이터의 교환에는 부적합함
 - 재사용할 수 없다
 - 확장할 수 없다

xml, jsp, php을 활용

CSS (Client Side Script)
JavaScript
VBScript
Jscript

SSS (Server Side Script)
ASP
ASP.NET (C#, VBScript)
PHP
JSP

댓글