사용자 삽입 이미지

○ 예선전 11번 문제

HINT3까지 나왔을때는 대충 사이즈를 조절하라는 거구나 했는데 저 숫자의 의미를 알지 못했다. 한 친구가 솟수라면서 문제를 풀고 가버렸고 다시 재현하려고 했을때 구하는 방법을 몰랐다. 한참 고민 끝에 다른 친구가 솟수의 곱은 자기 자신과 그 숫자외에는 나눠지지 않는다고 해서 C++를 이용하여 다시 문제를 풀었다. 잼있는 문제인것은 확실하다.(이 문제는 수전증 있는 사람과 색맹에 아주 불리한 문제로 해디켑이 있는 사람들에 대해서 차별 논란이 예상된다 ㅋㅋㅋ)


■ 예선전 11번 문제 화면

사용자 삽입 이미지


■ BMP 그림
사용자 삽입 이미지



■ 문제 풀이 결과

VS2008 C++ Console

#include "stdafx.h"
#define VAL 166493

int _tmain(int argc, _TCHAR* argv[])
{
    int width,height,i;

    for(i=2; i<1000; i++)
    {
        if(VAL % i == 0) {
            height=VAL/i; width=i;
            if(i>VAL/i) { height=i; width=VAL/i;}
            printf("Height : %d\t\tWidth : %d\nval : %d\n",
                     height, width, height*width);
            return 0;
        }
    }
    return 0;
}



※ 소수 연산결과

166493 → 331*503
93623 → 251*373
50137 → 181*277
15251 → 101*151
551 → 19*29



※ 사이즈 조절한 화면

I am Your No1 Fan!

사용자 삽입 이미지
Posted by n3015m
:
사용자 삽입 이미지

○ 예선전 9번 문제

예선전 9번 문제는 암호학관련 문제이다. 처음에 달랑 악보 그림 한장만 있어 난감했는데 악보 암호를 검색하다 마타하리 암호에 대해서 접하게 되면서 문제 풀이가 가능하였다.(이 문제의 실마리를 찾은 친구가 정말 대단하다)


■ 예선전 9번 문제 화면

사용자 삽입 이미지


→ 문제 페이지 접속한 화면

사용자 삽입 이미지
사용자 삽입 이미지


■ 힌트

마타하리(MATA HARI)


1914년 제2차 세계대전이 발발하자 국제적으로 폭넓은 교제를 해온 그녀는 스파이 후보를 찾고 있던 정보국 우두머리들의 좋은 목표가 됐으며 최초로 접근한 나라는 독일이었다고 한다. 1914년 마타 하리는 암스테르담에 위치한 독일 영사로부터 스파이로 활동할 것을 권유받았고 첩보원 H21 이란 이름으로 활동하기 시작했다.

사용자 삽입 이미지
※참고 SITE : http://blog.empas.com/rktnsska/read.html?a=31154592&c=2193799


■ 암호문 해독 결과

WELCOMETOCODEGATENEXTPASSWORDIS#MATAHARIWENEVERFORGOTABOUTYOU#


사용자 삽입 이미지
Posted by n3015m
:
사용자 삽입 이미지
lastest update 2009. 03. 01

Web Application의 기반 기술에서는 HTTP Protocol, 웹의 기능, 인코딩 스키마 등의 기반이 되는 기술들에 대해서 알아본다.


0x01 HTTP Protocol 개요

Hypertext transfer protocol은 인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약을 말한다.

정적인 텍스트 기반 자원들 검색 → 복잡한 분산 애플리케이션 지원

HTTP는 메시지 기반 모델로서 클라이언트가 요청 메시지를 보내고 서버가 그에 대한 응답 메세지를 보내는 방식으로 동작하며, HTTP의 전송 수단으로는 TCP 프로토콜을 사용하나 요청과 응답에 대한 교환은 독립적으로 취급돼 각기 다른 TCP 연결을 사용한다.

비연결지향적(connectionless)인 프로토콜


0x02 HTTP Request

HTTP 메세지는 헤터(Header)와 바디(Body)로 구성된다. 각각의 헤더는 라인으로 구분 되며 헤더와 메세지 바디(Message Body) 사이에 빈 줄이 들어간다.

사용자 삽입 이미지

○ HTTP Request는 첫 번째 줄은 다음의 세 가지 요소로 구성 됨

사용자 삽입 이미지

  HTTP Method : 웹 서버에서 자료를 가져오는 기능을 수행
  Request URL : 자료를 요청할 때 쓰는 이름으로 클라이언트가 자료를 요청한 쿼리 문자열
  HTTP Version : HTTP의 버전을 표시하며 일반적으로 1.0과 1.1을 사용하며 브라우저
                         초기 값은 대부분 1.1을 쓰며 1.1은 호스트 요청 헤더가 1.0과 달리 강제적이다.

○ HTTP Request에서 숙지해야할 헤더

사용자 삽입 이미지

  Referer Header : A 페이지에서 B 페이지로 이동할 경우 참조 주소로 A의 주소를 저장 함
  Accept-Encoding Header : 클라이언트가 지원하는 인코딩 형태를 서버에 알리는 역활
  Host Header : URL 주소에 나타난 호스트명을 나타냄, 가상 호스팅하는 사이트에서 필요
  Cookie Header : 서버에서 클라이언트에게 발행한 추가 정보를 전송하는 헤더



0x03 HTTP Response

일반적으로 HTTP Request의 응답은 아래와 같다.
사용자 삽입 이미지

○ HTTP Response의 첫 번째 줄은 다음의 세 가지 요소로 구성 됨

사용자 삽입 이미지

  HTTP Version 
  Status Code : HTTP Request에 대한 응답 결과의 상태로 세자리 숫자로 표시
                        200이 가장 일반적인 코드로 요청이 성공적으로 이뤄졌다는 것을 뜻 함
  Describing the status : 응답 결과의 상태를 짧은 문자열로 설명해 주는 부분
                        정상적으로 페이지가 전달됐을 경우 OK라는 값을 보내 줌(Status code : 200 )

○ HTTP Response에서 몇 가지 알아둬야할 헤더

사용자 삽입 이미지

  Server : 일반적으로 웹서버 소프트웨어를 나타내는 배너가 들어 있으며 간헐적으로
               설치된 모듈과 운영체제 정보도 포함. 서버 정보는 관리자가 조작이 가능 함
  Set-Cookie : Client 브라우저에 쿠키 정보를 설정. HTTP Request에서 Cookie 형태로 사용
  Content-Type : 메시지 바디에 들어 있는 컨텐츠 종류를 나타냄
  Content-Length : 메시지 바디의 길이를 나타냄



0x04 HTTP Method

HTTP Method는 Request에서 사용하며 HTTP 1.1에서는 다음과 같은 Method를 지원한다.

사용자 삽입 이미지

  GET : 웹서버의 리소스를 얻을 때 사용하며 URL 쿼리 문자 열에 인자 값을 보내는 용도
  POST : URL 요청 메세지와 메시지 바디를 전송 할 수 있으며 메세지 바디로 전송된
            매개변수들은 브라우저 주소창에 표시되지 않음
  OPTIONS : 서버에서 지원하는 메소드를 Allow 헤더에 나열되어 알려 줌
  HEAD : 메시지 본문을 받지 않을대 사용
            리소스에 대한 GET Request를 하기 전에 리소스 존재 유무 확인을 위해 사용
  TRACE : Debugging 목적으로 사용되는 메소드로 서버는 응답 바다에 요청 받은 자료와
            똑 같은이 응답 함. Client와 Server사이에 프록시 판단에 사용 가능
            타 애플리케이션 사용자 공격에 사용 될 수 있음(차후 설명)
  PUT : Request의 메시지 바디를 통해서 리소스 업로드에 사용
            이 메소드가 허용되면 임의의 스크립트를 업로드하고 실행 할 수 있음
  DELETE : 저장된 리소스를 삭제
  CONNECT : 터널링의 목적으로 연결을 요청에 사용 됨




0x05 URLs

URL(Uniform Resource Locator)는 인터넷상에 있는 리소스들의 위치를 나타내는 문자열로서 자원의 주소를 표현하는 체계

프로토콜://호스트명[:포트 번호]/[경로/]파일명[?param=값]
※ 프로토콜 : ftp, http, gopher, mailto, news, nntp, telnet, wais 등의 규약이 있음

포트 번호는 기본적으로 80번을 사용하기 때문에 URL에서 생량이 가능

EX)  http://www.secui.com/customer/support/notice_view.asp?idx=134




0x06 HTTP Header

HTTP는 수많은 종류의 헤더를 제공하며 그 중에는 특별한 경우에만 사용되는 것도 있다. 웹 사이트 취약점 진단에 사용되는 헤더에 대해서 알아보자.

  일반적인 헤더
  Connection : HTTP 전송이 완료된 후에 TCP 연결을 차단할지, 다른 메세지를 받기 위해
                  열어둘지 결정
  Content-Encoding : 메세지 바디 내용에 어떤 종류의 인코딩을 사용할지 정할때 쓰임
                  압축을 통해 속도를 향상시키 데 쓰이는 gzip 등의 인코딩 방법이 있음
  Content-Length : 메시지 바디의 길이를 나타낼 때 사용 됨(길이는 바이트 단위로 나타냄)
  Content-Type : 메시지 바디에 들어있는 컨텐츠의 종류를 나타냄.
                  HTML 문서는 text/html으로 표기
  Transfer-Encoding : 메시지 바디가 HTTP 전송을 쉽게 하게 도와주는 인코딩 방법

  요청 헤더
  Accept : 클라이언트가 그림 파일이나 문서 형식 등 어떤 종류의 내용을 수락할 것지인 서버에
                 알리는 역활
  Accept-Encoding : 클라이언트가 어떤 종류의 인코딩된 문서를 받아 들일지 서버에게 알리는
                 역활
  Authorization : HTTP 인증 형태에서 사용자의 식별 정보를 서버에게 보낼 때 사용
  Cookie : 서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할
                 실제 사용자 식별을 위해 사용 됨
  Host : 요청된 URL에 나타난 호스트명을 상세하게 나타낼 때 사용
  If-Modified-Since : 브라우저가 마지막으로 요청 자료를 받은 시간을 나타냄
                  자료가 변경된 적이 없다면 304 코드로 응답하며 Cache에 저장된 파일을 읽음
  If-None-Match : entity tag를 저장하기 위해서 사용
  Referer : 현재 요청을 전송한 페이지의 URL을 나타 냄
  User-Agent : 요청하는 브라우저의 정보를 나타냄

  응답 헤더
  Cache-Control : 캐시에 대한 지시를 브라우저에게 전달
  Etag : entity tag를 나타낼 때 사용
  Expire : 브라우저가 요청한 자원에 대하여 복사본의 사용 가능한 시간을 알림
  Location : 재정송하는 응답에서 목적지를 나타내는데 쓰임
  Pragma : 브라우저에게 no-cache와 같은 캐싱 지시를 보내기 위해 사용
  Server : 사용하고 웹서버의 소프트웨어에 대한 정보 제공
  Set-Cookie : 쿠키를 생성해서 부라우저에 보낼 때 사용
  WWW-Authenticate : 401 상태 코드로 서버로부터 제공받은 인증서의 종류와 상세 내용을
                  나타냄



0x07 Cookie

쿠키는 웹 애플리케이션 사용자를 구분할 때 사용되는 HTTP 프로토콜의 중요한 요소로 쓰임

Set-Cookie : NAME=VALUE; expires=DATE;path=PATH;domain=DOMAIN_NAME;
                      secure; HttpOnly;


  Set-Cookie 헤더
  Expires : 쿠키의 유효 기간을 나타 냄
                 Expires 속성이 없으면 쿠키는 현재 작업 세션에서만 사용 가능
  domain : 쿠키를 사용할 수 있는 도메인을 나타 냄
                 domain은 쿠키를 받은 도메인과 같거나 소스 컴퓨터가 같아야 함
  path : 쿠키가 사용할 수 있는 URL 경로를 나타냄
  secure : 이 속성이 설정되면 쿠키를 HTTPS 요청으로만 전송 함
  HttpOnly : 이 속성이 설정되면 쿠키는 클라이언 쪽의 자바스크립트로 직접 접근할 수 었음
                모든 브아우저에서 이 제한 기능을 지원하는 것은 아님



0x08 Status Code

HTTP Request에 대한 결과를 나타내는 상태 코드로 상태 코드는 코드의 첫 번재 숫자에 의해 다섯 가지로 구분 한다.

1xx : 정보를 제공함
2xx : 요청이 성공적으로 이뤄짐
3xx : 요청한 해당 자원이 다른 곳에 있음
4xx : 요청(클라이언트)에 문제가 있음
5xx : 서버에 에러가 있음

1xx에서 5xx 사이에 많은 상태 코드가 있지만 대부분 특수한 경우에 사용된다. 여기서는 웹 취약점 분석에 도움이 되는 상태 코드만을 알아 본다.

  100 Continue 
       클라이언트로부터 일부 요청을 받았으며 나머지 정보를 계속 요청한다.
  200 OK
       클라이언트의 요청이 성공적으로 수행되었다.
  201 Created
       PUT 메소드에 의해 원격지 서버에 파일이 정상적으로 생성된다.
  301 Moved Permanently
       요청된 URI는 더 이상 사용되지 않으며 요청에서 지정한 연산은 수행되지 않았다.
      
요청된 문서를 위한 새로운 위치는 Location 헤더에 명시한다.
앞으로 요청될 모든 문서는
       새로운
URI를 사용할 것이다
.
  302 Moved temporarily
       요청된 URI는 일시적으로 새로운 URI를 가진다. Location 헤더는 새로운 장소를 가리킨다.
       
만일 이것이 GET이나 HEAD
메소드에 대한 응답이라면 클라이언트는 응답을 받자마자 요청을
       해결하기 위해 새로운
URI를 사용해야 한다
.
  304 Not Modified
       이것은 If-Modified-Since 헤더에 대한 응답 코드로써 지정한 날짜 이래로 수정되지 않았다.
      
엔티티 몸체는 보내지 않으며, 클라이언트는 자신의 로컬 사본을 사용해야 한다
.
  400 Bad Request 
       사용자의 잘못된 요청을 처리할 수 없다는 의미이다.
  401 Unauthorized
       인증이 필요한 페이지를 요청한 경우이다.
  403 Forbidden
       클라이언트 요청에 대해 접근을 차단한다는 것을 나타낸다.
  404 Not Found
       지정한 URI에 문서가 존재하지 않는다.
  405 Method Not Allowed
       이 코드는 Allow 헤더와 함께 클라이언트가 사용한 메소드가 이 URI에 대해 지원되지 않는다는
       의미이다
.

  413 Request Entity Too Large
       클라이언트가 요청한 바디를 서버에서 처리하기에는 너무 크다는 것을 나타낸다.
  414 Request URI Too Long
        413요청과 비슷하지만 URL이 서버가 감당할 수 없을 만큼 너무 길다는 것을 나타낸다.
  500 Internal Server Error
        내부 서버 오류를 나타낸다.
  503 Service Unavaiable
        서비스 제공이 불가를 의미한다.




0x09 HTTP Authentication

HTTP 프로토콜은 사용자를 인증할 때 다음과 같은 다양한 인증 방법을 이용 한다.

사용자 삽입 이미지

  BASIC : 간단한 인증 방법으로 각 메시지 헤더에 Base64 인코딩을 사용
  NTLM : 시도/응답 방법으로, 윈도우 NTLM 프로토콜을 사용
  Digest : 시도/응답 방법으로, MD5 체크섬(checksum)을 사용

위의 인증은 프로토콜은 보통 인트라넷 기반의 서비스에서 사용하기 대문에 인터넷에 연결된 웹 애플리케이션에서 사용하는 것은 비교적 드물다.
Posted by n3015m
:

BLOG main image
웹 해킹 스터디를 위한 공간입니다. n3oism@gmail.com by n3015m

공지사항

카테고리

분류 전체보기 (17)
공지사항 (0)
웹 해킹 & 입문 (5)
웹 해킹 & 참고자료 (2)
해킹대회 문제풀이 (8)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :