ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 3번 풀이
    Wargame/webhacking.kr (old) 2019. 2. 28. 01:15

    네모로직이다.

    네모로직을 풀고, gogo 버튼을 눌렀더니, get 방식으로 어떤 값들이 전송되고 새로운 페이지로 넘어갔다.

     

    새로운 페이지에는 name을 입력할 수 있는 폼이 존재한다.

    get 방식으로 전송되는 값이 무엇인지 알아보기 위해 개발자도구(F12)로 이전 페이지의 소스 코드를 보았다.

     

    hidden type으로 로직의 결과가 get 방식으로 전송되고 있다. (검정 : 1, 흰: 0)

     

    다시 원래 페이지로 넘어가서,

    name에 test를 입력해 주었더니 페이지에 아래와 같이 출력되었다.

     

    일단 입력할 수 있는 것이 name 밖에 없으니 name의 값으로 SQL Injection을 시도하였다.

     

    입력한 그대로 출력된다...?

    name은 공격벡터가 아닌 것 같다.

    소스 코드를 보자.

     

    post 방식으로 answer과 name 값을 전송한다.

    name은 공격벡터가 아닌 것 같아 answer으로 SQL Injection을 시도하였다.

     

    단, post 방식으로 값을 넘겨주기 때문에 fiddler와 같은 프록시 툴을 이용해야 한다.

    fiddler 설치 및 사용법을 모르면 아래 글을 참고하자.

     

    [fiddler 설치 및 사용법] https://grini25.tistory.com/13

     

    answer의 값과 id의 값이 &로 묶여 전송되는 것을 확인할 수 있다.

    or을 이용하여 아래와 같이 조작한 후 값은 전송해보았다.

     

    no hack이 페이지에 출력된다.

    injection point는 answer이다..!

     

    SQL Injection을 하기에 앞서, 삽질을 줄이기 위해 필터링된 문자열을 확인하였다.

     

    ' (싱글 쿼터), =, or, and, --, #

    필터링되어 no hack이 출력된다.

     

    ", ||, like, true, false

    필터링되어 있지 않고, 정상적 쿼리문으로 입력한 것이 아니라 query error! 가 출력된다.

     

    +, %20

    아무 값도 출력되지 않는다. (필터링된 것 같지는 않다.)

     

    &&

    필터링되어 있지 않다.

    원래 출력되던 것이 출력되었지만, 아래와 같이 여러개가 한번에 추가되어 출력된다.

    아무 값도 출력되지 않던 개수만큼 증가한다. 단순 오작동인가? 잘 모르겠다.

     

     

    필터링되지 않는 값을 이용하여 SQL Injection을 수행하였다.

     

    or이 필터링되어 있기 때문에 ||를 이용해 쿼리문을 으로 만들어주었다.

     

    내가 전송한 값과 admin의 값이 함께 출력되었다.

    admin의 answer 값을 Auth 페이지에 인증하면 문제가 풀린다.

     

     

    'Wargame > webhacking.kr (old)' 카테고리의 다른 글

    [Webhacking.kr] 5번 풀이  (0) 2019.03.02
    [Webhacking.kr] 4번 풀이  (0) 2019.03.02
    [Webhacking.kr] 2번 풀이  (0) 2019.02.28
    [Webhacking.kr] 1번 풀이  (0) 2019.02.27
    [Webhacking.kr] 회원 가입  (0) 2019.02.27

    댓글

@Jo Grini's Blog