[Normaltic's CTF] Steal Info 1

2024. 7. 5. 22:54정보보안 및 해킹/CTF

페이지가 많이 있습니다.

가짜 마이페이지 하나, 진짜 마이페이지 하나, 그리고 항상 보던 페이지 두 개네요

하나씩 살펴보겠습니다.

가짜 마이페이지에 들어오니 귀여운 후디가 절 반겨줍니다.

진짜 귀엽습니다.. 저 끈 꼭 손 같지 않나요?

페이지가 심플하고 이것저것 눌러보니 작동하는 버튼은 없습니다.

하나 보이는 것이 있네요. This is a Very Secret Info.

진짜 마이페이지의 저 부분에 Flag가 있다는 뜻이겠지요?

일단 가짜 마이페이지의 저 부분은 구성이 어떻게 되어있는지 확인할 필요가 있어 보입니다.

class가 card-text이고, p태그로 되어있고, innerHTML이 저 문구라는 것 외에는 특정할 것이 보이지 않습니다.

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

이렇게 완성되겠네요

이제 가짜 마이페이지는 다 확인했으니, 진짜 마이페이지를 한 번 확인해봅시다

권한 노노...

입구컷 당했습니다.

아쉬운 맘을 뒤로 하고 항상 보던 메인 페이지로 돌아가봅니다.

일단 회원가입과 로그인을 합니다.

가짜 마이페이지든, 진짜 마이페이지든 하나 불러와야 할 필요가 있기 때문에 해당 XSS는 iframe으로 뭘 띄울 수 있어야 합니다.

따라서 글을 저장할 수 있는 공지 사항쪽에서 XSS가 일어날 확률이 높아 보입니다.

공지 사항으로 들어갑니다.

우선 첫 번째 절차로 XSS 공격에 사용할 특수문자인 < ' " > 를 넣어서 Burp Suite에서 Response에서 어떻게 보이는지 확인합니다.

제목쪽에서는 HTML Encoding이 일어나고 있으나, 내용쪽에서는 그대로 드러나고 있습니다.

그럼 내용을 공략하면 될 것 같습니다.

iframe으로 진짜 마이페이지를 띄웁니다. id는 임의로 설정합니다.

EventListenet로 DOMContent가 전부 로드되는 것을 기다립니다.

getElementById를 통해서 iframe을 변수에 담아줍니다

해당 변수를 document화 시키기 위해 .contentDocument를 사용합니다.

(하지만 위의 것은 브라우저에 따라 작동여부에 변동이 있는 듯 합니다. contentDocument로 안 될 경우에는 contentWindow를 사용합니다. 방어코드를 위해 두 가지 다 체크하는게 좋습니다.)

document화 시킨 변수에서 아까 확인한 구성요소(getElementsByClassName('card-text')[1].innerHTML)를 뽑아냅니다.

해당 구성요소를 그대로 VPS에 전송합니다.

물론 저는 관리자가 아니기 때문에 제가 하면 아무 의미가 없습니다.

이걸 관리자에게 넘기도록 하겠습니다

해당 게시글의 URL을 복사하고 관리자가 방문하는 곳에 붙여넣어 방문하게 합니다.

'정보보안 및 해킹 > CTF' 카테고리의 다른 글

[Normaltic's CTF] GET Admin 1  (0) 2024.07.09
[Normaltic's CTF] Steal Info 2  (0) 2024.07.05
[Normaltic's CTF] Basic Script Prac  (0) 2024.07.05
[Normaltic's CTF] XSS Challenge  (2) 2024.06.25
[Normaltic's CTF] XSS5  (0) 2024.06.25