SONOTRI
  • old-15
    2024년 12월 31일 16시 46분 59초에 업로드 된 글입니다.
    작성자: sonootri

    문제

    문제를 클릭하면 이렇게 뜬다. Acess_Denied? 

     

     

    문제 분석

    일단 url에서는 얻을 수 있는 정보가 없는것 같아 버프 스윕트로 패킷을 잡아봤다.  Proxy > HTTP History에서 문제의 html 소스를 얻을 수 있었다.

    location.href과 document.write이 보인다.

    <html>
    <head>
    <title>Challenge 15</title>
    </head>
    <body>
    <script>
      alert("Access_Denied"); //여기 아래를 주목하자
      location.href='/';
      document.write("<a href=?getFlag>[Get Flag]</a>");
    </script>
    </body>

     

    일단 잘 모르는 문법부터 찾아보자.

    <location.href>
    javascript에서 페이지 이동할 때 사용된다. location.href는 객체의 속성이다.개발자 콘솔에서 해당 명령어를 입력하면 현재 위치한 페이지의 주소를 반환한다.

    네이버 페이지에서 콘솔창에 아래 명령어를 작성하면 webhacking.kr로 주소가 이동된다.

    location.href='https://webhacking.kr/chall.php'​

    <location.replace>
    location.href와 비슷하다. 차이점은 기존 페이지를 새로운 페이지로 변경시키기 때문에 이전 주소 히스토리가 기록되지 않는다.
    <document.write>
    () 안의 내용을 페이지에 출력되는 함수이다. 이벤트 핸들러와 함께 사용 가능하다.
    <a>태그
    하나의 페이지에서 다른 페이지를 연결할 떄 사용되는 하이퍼링크를 정의할 때 사용한다. <a> 태그에서 가장 중요한 속성은 링크의 목적지를 가리키는 href 속성이다.

    href 속성
    링크된 페이지의 URL을 명시한다.
    <a href="https://www.naver.com">네이버 사이트로 이동!</a>​
    <a href="javascript:alert('자바스크립트가 실행되었습니다.');">자바스크립트 실행!</a>

     

     

    익스플로잇

    / 뒤에 ?getFlag를 입력하면 플래그를 얻는 것 같다. 그래서 쿼리문을 입력했더니 리디렉션 되더니 문제가 풀렸다.

    뭔가 제대로 푼 것 같지 않아 다른 write-up을 참고했다.

    -> 밑의 '취약점'부분에 자세히 설명해놨다.

    <script>
      alert("Access_Denied"); //먼저 alert 함수가 호출되고
      location.href='/'; //상대주소 /로 이동
      document.write("<a href=?getFlag>[Get Flag]</a>");
    </script>


    정리: Write-up을 참고 하며 - javascript 허용X

    문제 분석

    문제에 들어가면 Access_Denied라는 alert가 뜨고, webhacking.kr 창으로 이동한다.

    -> alert가 쓰인 것, /(webhacking.kr)로 이동하는 것을 파악해라. 사소한 정보도 넘기지 말자

     

    alert창이 나온다는 점, 주소창이 js-2로 되어있다는 점에서 페이지가 javascript에 의해 작동하는 것으로 보인다.

    -> alert는 순수 javascript의 함수로, 다른 프로그래밍 언어에서는 동일한 문법으로 지원되지 않는다. 앞으로 alert가 보이면 js를 생각하자.

     

    자바스크립트에 의해 alert와 페이지 이동이 작동하는것이라면, 자바스크립트를 꺼주면 해당 액션이 작동하지 않는다는 소리가 된다. chrom > 개인정보보호 및 보안 > 사이트 설정 > 자바스크립트 허용하지 않음으로 바꾼 뒤 old-15문제에 접근하면 아래 html 코드를 얻을 수 있다.

     

    취약점

    location.href='/' 에 의해 메인 화면으로 돌아가는것이 문제였다. alert 이후 /로 리다이렉션되고, 브라우저가 페이지 이동을 하게되면 현재 페이지의 자바스크립트 실행이 중단되기 때문에 document.write가 실행되지 않는다.

     

     

    익스플로잇

    document.write 부분에 <a href=?getFlag>가 있으니 이 부분을 콘솔창에 입력하면 아래 주소로 이동할 것이다. 이는 ?쿼리문을 작성하는 것과 동일하게 작동한다(둘다 url 주소 뒤에 ?가 붙게되니).


    정리: Write-up을 참고하며 - 버프 스윕트 이용

    버프 스윕트에서 html 편집이 가능하다고 한다. 그러면 alert와 location.href 부분을 지우고 요청을 보내면 되는데, html 편집이 안되는 상태이다. 이건 나중에 해결되면 다시 작성하기로 하자. 

     

    'PRIVATE > webhacking.kr' 카테고리의 다른 글

    old-16  (0) 2025.01.02
    Old-26  (0) 2024.12.31
    댓글