오늘은 Dreamhack.io의 XSS 문제를 풀어보았습니다.
vuln 페이지로 가보니 params로 넣은 스크립트가 작동하는 것을 확인할 수 있습니다.
memo 페이지는 params로 memo에 값을 넣으면 텍스트가 추가됩니다.
그리고 백엔드 코드를 보니
로컬에서 셀레니움을 돌리고 쿠키를 넣는 것 같습니다.
이걸 flag 페이지에 다음 스크립트를 돌리도록 해봅시다.
<script>location.href="http://localhost:8000/memo?memo="+document.cookie</script>
제출 버튼을 누르면
alert가 뜬걸 확인했습니다. memo페이지로 가보면 flag가 잘 나온 모습을 확인할 수 있습니다.
이 문제도 XSS-1 문제와 코드에서 차이점은 없었습니다. 그러나 vuln 페이지에서 스크립트가 먹히지 않았습니다.
이를 우회하기 위해 img 태그를 활용해 스크립트를 제출해 보았습니다.
<img src="" onerror="location.href='http://localhost:8000/memo?memo='+document.cookie">
제출하니 잘 작동하는걸 확인할 수 있습니다.
오늘은 XSS 문제를 풀어보았습니다. 직접 해 보니까 이해가 잘 되는 것 같았습니다.