ABOUT ME

-

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

    Webhacking.kr 의 2번 문제.

    예전에 대회에서도 나왔던 문제였던걸로 기억하는데..

    꽤 어려웠던 문제

    이번에 풀면서도 한참 헤매게된 문제이다.

    차근차근 한번 풀어보자








    해킹대회/워게임을 열심히 하는 사람들에게 "홍길동문제"라고 물어보면 다들 이 문제를 떠오르게 될만한 메인화면

    홍길동이 명상을 잘 하고 있는 그림이 나온다.


    홈페이지 환경으로 문제를 구축해두었는데.

    각 메뉴마다 들어가보면서 와.. 무슨말인지모르겠다 라고 한번씩 느껴주자.


    그리고 메인화면으로 돌아와 소스보기를 한번 해보자.





    이 소스에서 눈여겨 봐야할 몇가지가 있다.



     <area shape="rect" coords="851,7,890,65" href="admin/" target="" alt="" />

    1. admin 페이지가 노출되어있다는 것.



     <!--2014-06-16 02:23:52--></td>

    2. 알수없지만, 시간정보가 주석처리 되어 있다는 것.


    그리고 메뉴들을 돌아다니다 보면

    board 메뉴에서 다음과 같은 화면을 볼 수 있다.





    매우.. 넌 이 비밀번호를 알아야 이 문제를 풀 수 있어. 같은 느낌을 주는 화면이다.


    또 아까 html 소스에서 본 admin 페이지에 접속을 해보자.


    admin페이지도 마찬가지로..

    여길 뚫어야만해 라는 느낌을 팍팍 준다.


    종합해보면.

    1. admin 페이지 암호를 알아내야 한다.

    2. board 게시판의 oldzombie의 게시글 암호를 알아내야한다.

    3. main 페이지에 알수없는 시간정보 주석문이 있다.

    이다.


    또 한가지, 이 문제에 접속하게되면서

    쿠키값이 새로 구워진것이 있다.



     time=1402896232

    이러한 값이다.

    이 time값을 date형식으로 변환하게 되면,

    3번의 시간정보 주석문의 시간이 나온다.


    즉 3번의 시간정보 주석문은 time 쿠키값으로 정해진다.

    또 한가지 테스트를 통해 알아낼 수 있는 것은

    이 쿠키값으로 SQL쿼리가 동작한다는것을 알 수 있다.



    Cookie: time=1402896232 and 1=1

    => <!--2070-01-01 09:00:01--></td>


    Cookie: time=1402896232 and 1=0

    => <!--2070-01-01 09:00:00--></td>

    이와 같은 쿼리를 보냈을때, 쿼리 결과가 true 일 경우 맨뒤의 초가 1

    false 일 경우 0 인 것을 확인할 수 있다.


    즉 우리는 이 부분을 통해서 Blind SQL Injection 을 행할수 있고,

    결과적으로 board 의 비밀번호나 admin의 비밀번호를 DB로 부터 찾아낼 수 있는것이다.


    예전에 해당 문제에 힌트가 있었는데, 검색해보니 다음과 같다.


     board table name: FreeB0aRd

     admin table name: admin


    이 힌트를 통해서 Board 의 암호는 FreeB0aRd 테이블에서,

    admin 페이지의 암호는 admin 테이블에서 Blind SQL Injection 을 통해

    알아오면 되겠다.



     Cookie: time=123141232 and (select ascii(substr(password,1,1))from admin)=32

    와 같은 방법으로 Blind SQL Injection 을 통해

    admin 페이지의 암호를 알아내고



     Cookie time=123123123 and (select ascii(substr(password,1,1))from FreeB0aRd)=32

    와 같이 Board의 암호를 알아내면 되겠다.

    이 암호를 알아내는 Python 코드는 아래에 첨부된 파일을 참고하면 되겠다.



    challege2.py



    암호를 모두 알아내면,

    게시판에 접근하여 글을 읽으면 다음과 같은 글이 있다.



    admin manual 을 클릭하면 파일을 다운로드 받을 수 있다.

    zip 파일을 받게되는데.. 암호로 묶여있어서 암호를 풀 수 없다.


    또 우리가 알아낸 admin 페이지 암호로 admin페이지에 접속해보자.




    다음과 같은 화면을 볼 수 있고,

    여기서 알려주는 메뉴얼 패스워드로 압축을 해제하면

    manual.html

    파일을 얻을 수 있다.

    브라우저나 에디터로 열어보면 인증암호를 획득할 수 있다.






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

    [Webhacking.kr] Challenge 4  (0) 2014.07.10
    [Webhacking.kr] Challenge 3  (0) 2014.06.19
    [Webhacking.kr] Challenge 1  (0) 2014.06.13
    [Webhacking.kr] Challenge 8  (0) 2014.06.10
    [ftz.hackerschool.org] Level 1  (0) 2012.09.20

    댓글

Designed by Tistory.