ABOUT ME

-

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



    요 몇일째 웹해킹에 재미들려서 webhacking.kr 을 열심히 풀어헤치는중

    다른 문제들도 풀이를 하나씩 써 나갈거지만 8번 문제를 풀다가 풀이가 쓰고 싶어서 먼저 써본다.




    8번문제 링크에 접근하게 되면



    이와 같은 화면을 보게 된다.



    일단 문제를 풀기 위해 소스를 한번 살펴보자

    /index.phps

    로 접하게되면 다음과 같은 소스를 볼 수 있다.




    문제를 solve 하기 위해선 'lv0' 테이블의 id가 admin 이어야 solved 된다.

    이 id를 구해오기 위해서 'HTTP_USER_AGENT' 를 where문으로 찾는다.


    그리고, 해당 'HTTP_USER_AGENT'의 대한 데이터가 없으면, 새로운 'guest' ID의 데이터를 추가하게 된다.


    즉 우리가 해야 하는건, admin 이란 id를 가진 agent 를 추가해야하는데,

    우리는 agent 값을 조작해서, insert 구문에 SQL Injection 을 행하는 방법이다.



    우리가 먼저 알아야 할 것이 있는데,

    Insert 문은 한번에 하나의 데이터만 삽입해야하는 것이 아니다.

    다시 말해, insert는 여러개의 데이터를 한번에 삽입할 수 있다.



    위의 예제를 보면, VALUES 에 여러개의 괄호로 여러개의 데이터가 삽입 가능하다.


    즉 우리는 이 문제를 해결하기 위해서

    첫번째 데이터에 임의로 데이터를 넣어주고,

    두번째 데이터는 서버사이드스크립트에 의해 삽입되도록 두번

    2개의 데이터가 삽입될 것이고.


    해당 문제는 1번 Index 의 값을 가져와 체크하기 때문에

    우리가 넣은 첫번째 데이터를 검사하게 될 것이다.


    그렇게 되면 우리가 첫번째로 넣음 admin 데이터에 의해서

    문제가 해결될 것이다.


    그럼 실제로 문제를 풀어보자


    'HTTP_USER_AGENT'를 조작하기 위해서는 HTTP REQUEST를 수정할 수 있어야 하는데.

    이는 HTTP REQUEST 툴이나, 파로스 또는 직접 코딩을 하여 조작하면 되겠다.


    필자는 Python 을 통해 코드를 작성하여 문제를 해결 하였다.




    위와 같이 UserAgent 를 통해 SQL Injection 을 수행한다면
    해당 문제를 풀이하는 결과를 볼 수 있다.


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

    [Webhacking.kr] Challenge 2  (6) 2014.06.17
    [Webhacking.kr] Challenge 1  (0) 2014.06.13
    [ftz.hackerschool.org] Level 1  (0) 2012.09.20
    [Wargame.kr] Login Fillttering  (0) 2012.08.09
    [Wargame.kr] Flee Button  (0) 2012.08.09

    댓글

Designed by Tistory.