ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] Challenge 1
    Security/Wargame 2014. 6. 13. 13:08
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    WebHacking.kr 을 1번부터 풀이해볼까 한다. [끝까지 다할 수 있을지는...]


    1번 문제를 보자




    위의 문제를 접속해보자







    별거 없는 화면이다.


    index.phps 라는 문구가 있는데,

    현재 이 화면을 보여주는 url 주소를 보게되면


    http://host/challenge/web/web-01/

    라는 주소이다.


    web-01/ 뒤에는 기본으로 보여줄 index 페이지 주소가 생략되어있는 것.

    index.html, index.htm, index.php, index.jsp, index.asp, defaul.html

    등 현재 Directory 의 메인페이지를 보여줄것이다.


    화면에서 보여주는 문구를 보아

    현재 페이지는 index.php

    일 것이고, index.phps 를 열어보라는 의미일 것이다.



    .phps 확장자는 PHP Source 파일의 약자로

    해당 php 의 소스를 저장하는 파일로 쓰여지고 있다.


    즉 문구에서 보여주는 index.phps 는 페이지의 소스를 보고 문제를 풀라는 뜻이 되겠다.

    (일종의 힌트...? 문제를 보여주는것)


    index.php 파일을 열어보자



    http://host/challenge/web/web-01/index.phps





    다음과 같은 화면을 보게될 것이다.

    방금 우리가 보았던 페이지의 소스이다.


    이 페이지는 php 와 html로 구성된 것을 알 수 있다.


    문자를 해결하기 위해선 소스를 분석해서 문제점을 찾아내고, 문제점을 통해 공격해가면 되겠다.


    html 소스는 우리가 볼 필요가 없고,

    php 소스를 보고 문제점을 찾아보자



    이 소스부분과

    이 소스부분으로 나누어져 있다.


    보게되면 페이지를 로드할때 Cookie값에 user_lv 라는 값이 없으면 user_lv=1 값으로 쿠키를 구워준다

    그럼 처음접속한 사용자는 user_lv 의 쿠키값은 기본으로 1을 가지고 있게된다.


    그리고 아래의 소스를 보게되면 3개의 if문으로 조건을 저리하는데


    첫번째 if문은 정규식을 이용하여  패턴에 해당되는 쿠키값을 쓰게되면 값을 1로 설정해버린다.

    두번째는 쿠키값이 6이상이면 1로 설정해버린다.

    세번째는 쿠키값이 5보다 크면 문제를 클리어한다.


    위의 조건을 만족해야 문제를 클리어하게되는데

    5보다 커야하고 6보다는 작아야한다.

    5 다음은 6인데 어떻게......?

    5 도 안되고 6도 안된다.

    그럼 5와 6사이엔 어떤 숫자가 있지?


    소수점을 이용하면 이 문제는 해결할 수 있다.

    정수로는 5와 6사이의 값이 존재하지않지만.

    실수로는 존재하기 때문에, 5.1~5.9 의 값을 이용하여 문제를 해결할 수 있겠다.


    쿠키값을 변조하는 방법은 javascript 를 이용하여 직접 변경할 수 도있고,

    Cooxie Toolbar 를 이용하거나, EditThisCookie와 같은 인터넷확장프로그램을 이용해도 간단하게 해결할 수 있다.



    필자는 javascript 를 이용하여 해결하는 방법을 게시하겠다.


    브라우저는 기본적으로 주소창에서 javascript 를 지원한다.

    즉 이 문제에선 브라우저 주소창을 통해서 javascript 로 쿠키값을 보거나, 변조할 수 있다.


    주소창에 javascript:alert(document.cookie); 라고  적고 엔터를 눌러보자




    위와 같은 메세지창을 확인 할 수 있을것이다.

    (박스가 큰 이유는 다른 쿠키값들도 있는데, 필자가 보이지않도록 블러처리하였다)


    그럼 user_lv=1 이란 값을 볼 수 있는데, 이 쿠키는 페이지에 처음 접속했을때

    php 소스에 의해 구워진 쿠키이다.


    그럼 이 쿠키값을 5.1~5.9의 값으로 설정시켜주면 된다.



     javascript:alert(document.cookie="user_lv=5.5");

    브라우저 주소창에 위와 같이 입력해보자




    다음과 같은 메세지를 볼 수 있는데, 위의 값으로 쿠키값을 변조한 것이다.


    확인을 누른 후 새로고침을 해보면




    위와 같은 메세지박스가 뜨고 문제를 클리어했다.



    'Security > Wargame' 카테고리의 다른 글

    [Webhacking.kr] Challenge 3  (2) 2014.06.19
    [Webhacking.kr] Challenge 2  (6) 2014.06.17
    [Webhacking.kr] Challenge 8  (4) 2014.06.10
    [ftz.hackerschool.org] Level 1  (1) 2012.09.20
    [Wargame.kr] Login Fillttering  (4) 2012.08.09

    댓글

Designed by Tistory.