ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] Challenge 5
    Wargame/Webhacking.kr 2023. 1. 13. 00:56
    반응형

    Challenge 5를 풀어보자.

    몇 가지 개념들이 필요하긴 하지만, 쉽게 해결이 가능한 문제이다.

     

    문제 화면을 보면 Login과 Join이라는 두 개의 버튼이 보인다.

    그 외에는 검은 바탕밖에 없으므로 소스 코드를 보도록 하자.

    <Challenge 5의 문제 화면>

     

    소스 코드를 봐도 별다른 내용이 없다.

    단지 login.php 페이지로 이동할 뿐인데, 자세히 보면 Join 버튼을 누르면 요청이 거부되고 있다.

    여기에 무엇인가가 있을 것 같은 생각이 든다.

    <Challenge 5 문제의 소스 코드>

     

    login.php 페이지로 와 아무 내용이나 입력해 봤지만, 역시나 정상적인 접속은 되지 않는다.

    이곳에는 무엇인가 힌트가 있을까해서 소스 코드를 봤지만 아무 내용이 없다.

    앞에서도 생각했지만 Join 버튼을 이용해야만 해결할 수 있을 것 같다.

    <login.php 페이지>
    <login.php 페이지의 소스 코드>

     

    어떻게 Join 버튼을 이용할 수 있을까??

    login.php 페이지로 접속할 때의 URL을 잘 보면, mem 디렉토리로 먼저 들어가는 것을 볼 수 있다.

    이것을 보고, Directory Listing 취약점이 있지 않을까 해서 URL에 mem 디렉토리를 입력하였다.

     

    그 생각이 맞았고, join.php 페이지가 mem 디렉토리에 있는 것을 확인할 수 있다.

    <Directory Listing 취약점 발견>

     

    이제 mem 디렉토리 하위의 join.php 페이지에 접속을 시도해보도록 하자.

    그랬더니 bye라는 문구의 alert 창이 반겨준다.

    <join.php 페이지 접속>

     

    페이지의 내용을 보기 위해 소스 코드를 살펴보도록 하자.

    그런데, 내용이 이상하다.

    아마도 읽기 어렵게 하기 위해 난독화를 해놓은 것 같다.

    <join.php 페이지의 소스 코드>

     

    메모장에 내용을 옮겨 코드를 해독하니, 아래와 같은 내용인 것을 알 수 있었다.

    (해독 후 크롬의 개발자 도구에서 console을 이용해 간단하게 해결할 수 있는 것을 알게 되었다..)

    내용으로 cookie는 oldzombie가 되어야 하고, url의 ? 뒤의 쿼리에 mode=1이 있어야 정상 접속이 된다.

    <난독화 코드를 해독한 내용>

     

    cookie 값을 수정하고 ? 뒤에 mode=1을 넣고 접속하니, 정상적으로 join.php 페이지가 나타났다.

    이제 가입을 하고 login 페이지에 접속을 하면 문제가 해결될 것 같다.

    아무 id와 pass를 입력하고 제출해 가입을 해보자.

    <가입 시도>

     

    그런데, 가입한 id로 로그인을 시도하니 admin으로 로그인을 해야 한다고 나타난다.

    (미리 좀 알려주지..)

    <admin으로 로그인 요구>

     

    다시 join.php 페이지로 돌아와 admin의 id로 가입을 시도해보자.

    그런데.. id가 이미 존재한다는 alert 창이 나타난다.

    <admin의 id로 가입 시도>
    <admin id 존재>

     

    어떤 식으로 가입을 해야 admin을 정상적으로 인식할까??

    SQL Injection과 관련이 있을 것 같아 여러 방법을 시도해보았지만, 모두 되지 않았다.

     

    그래서 DB 자체의 문제를 떠올렸고, varchar 형식이 아닌 char 형식으로 로그인 할 것이라 생각했다.

    둘의 차이는 가변형과 고정형의 차인데 자세한 것은 구글링을 하면 알 수 있다.

     

    위의 성질을 참고해 burp suite을 통해 admin의 앞, 뒤에 공백을 넣어 가입하였다.

    그랬더니 admin의 id로 정상적으로 가입이 되는 것을 볼 수 있었다.

    <공백 문자를 넣어 admin 가입>
    <정상 가입 완료>

     

    burp suite을 이용해 공백을 넣은 admin 계정으로 로그인을 시도하면 Hello admin이 출력된다.

    그리고 old-05 Pwned!의 alert 창이 나타나며 문제가 해결된다.

    <Challenge 5 문제 완료>

    반응형

    'Wargame > Webhacking.kr' 카테고리의 다른 글

    [Webhacking.kr] Challenge 7  (0) 2023.01.14
    [Webhacking.kr] Challenge 6  (0) 2023.01.14
    [Webhacking.kr] Challenge 4  (0) 2023.01.12
    [Webhacking.kr] Challenge 3  (0) 2022.12.11
    [Webhacking.kr] Challenge 2  (0) 2022.12.09

    댓글

Designed by Tistory.