ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 10번 풀이
    Wargame/webhacking.kr (old) 2019. 3. 3. 00:20
    728x90


    뭘 해야 할지 모르겠어서 마우스로 방황하다가.. 글자위에 마우스를 가져다 놓았다.



    O부분에 마우스가 올라가면 yOu로 바뀌고 buy lotto 부분은 아무런 변화가 없다.

    일단 소스 코드를 보았다.



    onclick

    마우스 왼쪽 클릭 이벤트


    onmouseover

    마우스가 개체 위로 올라갔을 때 발생하는 이벤트


    onmouseout

    마우스가 개체에서 빠져 나갈 때 발생하는 이벤트


    O의 id가 hackme인 것을 보니 이것을 해킹하는 문제이다.

    한 번 클릭하면 위치가 왼쪽으로 1칸 이동하고, O의 위치가 800이 되면 '현재 URL?go=800'으로 이동한다.


    일단 O를 클릭해 왼쪽으로 이동하는지 해보니 아무런 변화가 없다...;;

    찾아보니 Chrome에서 안된단다....ㅠ

    Internet Explorer를 통해 O를 클릭해보니 아래와 같이 왼쪽으로 이동하는 것을 확인할 수 있었다.



    소스 코드가 잘 작동하는 것을 확인했으니, 다시 Chrome으로 돌아와서 URL뒤에 '?go=800'을 추가해주었다.



    no hack이다..!

    go=800을 주고 직접 접근하는 것은 막혀있다. 버튼을 800번 눌러서 접근해야하나...?!

    우리에겐 아주 유용한 개발자 도구(F12)가 있다!


    일단 페이지를 새로 고침(F5)하여 원래 위치를 0으로 돌려놓고,

    개발자 도구를 이용하여 한 번 클릭 시 800이 되도록 고치고 클릭하면 될 것이다.



    위와 같이 소스를 변경하고,

    O를 클릭해주면,,,, 문제가 풀린다.



    소스 코드를 수정하지 않고 개발자 도구(F12)의 Console을 이용할 수도 있다.



    위와 같이 Console을 이용하여 O의 위치를 799로 변경시켜주고,

    클릭하면...

    원래 소스 코드대로 1이 증가하여 문제가 풀린다.


    여기서 의문점은 url에 직접 go=800의 값을 주고 접근하는 경우와 클릭으로 접근하는 경우가 다른 걸까?

    fiddler를 이용하여 request를 잡아보았다.


    [url에 직접 입력하여 접근한 경우]



    [클릭으로 접근한 경우]



    두 개의 세션을 비교한 결과 Referer의 유무가 다르다.


    맞는지 확인하기 위해, url에 직접 go=800을 입력 후 fiddler를 통해 Referer을 추가하여 전송해보았다.



    문제가 풀린다...!


    HTTP Referer란?

    Http의 헤더 중 하나로 어떤 사이트나 서버에서 방문했는지 파악할 수 있는 정보이다.

    언제나 방문자가 모든 곳에 Referer을 전송해 남기는 것이 아니라 몇 가지 조건이 충족되어야 하는데

    그 중 기본적인 조건은 링크를 클릭해 특정 사이트에 방문하는 것이다.

    또한 웹 서버에서 올바른 Referer 정보를 보내지 않는 브라우저에 대한 액세스를 거부할 수도 있다.

    [HTTP Referer] https://damedame.tistory.com/entry/HTTP-referer


    정리하자면, 위 문제에서 직접 url을 입력하여 접근하려 한 경우에는 Referer 정보가 전송되지 않았기 때문에

    웹 서버에서 no hack을 띄워 액세스를 거부한 것이고,

    O를 클릭하여 접근한 경우에는 링크를 클릭해 접근하였기 때문에 Referer의 정보가 전송되어

    액세스가 허용된 것이다.


    반응형

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

    [Webhacking.kr] 12번 풀이  (0) 2019.04.16
    [Webhacking.kr] 11번 풀이  (0) 2019.04.16
    [Webhacking.kr] 10번 풀이  (0) 2019.03.03
    [Webhacking.kr] 9번 풀이  (0) 2019.03.02
    [Webhacking.kr] 8번 풀이  (0) 2019.03.02
    [Webhacking.kr] 6번 풀이  (0) 2019.03.02

    댓글 0

@Jo Grini's Blog