문제 페이지에 접속하면 위와 같은 페이지를 확인할 수 있다.
메인 페이지의 각각의 카테고리를 하나씩 들어가면 각 페이지를 확인할 수 있고 3번째 카테고리인 'flag' 에는 param= 뒤에 스크립트를 입력할 수 있는 공간이 있다 아마 xss 필터링을 우회하는 구문을 작성할 수 있을 것으로 보인다.
해당 페이지 내에서는 더 해결할 수 있는 부분이 없는 것으로 보여 문제 해결을 위해 소스코드를 확인해보자
소스코드를 확인해보면 위와 같이 필터링 되는 부분이 많고 또한, 해당 문자를 공백으로 바꾸는 것이 아닌 다른 문자로 바꿔주므로 중간에 삽입할 수도 없음을 알 수 있다.
소스코드에서 필터링 되어있는 부분과 같이 on 이벤트와 script 태그를 쓰지 않는 방법으로 우회하여 코드를 작성해야 한다.
<script>location.href="/memo?memo="+document.cookie</script>
우선 script 태그 필터링에 걸리는 코드를 작성해주었는데 해당 코드를 변형하여 필터링을 우회할 수 있도록 작성해보자.
나는 iframe 태그로 변경하여 해당 필터링에 걸리지 않도록 작성해주었으나, javascript 스키마를 사용할 수 없기에 해당 부분을 유니코드로 변환하고 javascript: 자체는 \t와 같은 특수문자로 변환해주었다.
따라서 flag 획득을 위한 최종 코드는 아래와 같다.
<iframe src="javascri pt:locati\u006Fn.href='/memo?memo='+d\u006Fcument.cookie"></iframe>
해당 코드를 입력하고 제출 버튼을 누르면
good이라는 팝업창이 뜨고
memo 탭에 들어가면 플래그 값을 확인할 수 있다!!
'Security > Web hacking' 카테고리의 다른 글
[Dreamhack] chocoshop wirte-up (0) | 2024.11.13 |
---|---|
[Dreamhack] CSP Bypass Advanced wirte-up (3) | 2024.11.06 |
[Dreamhack] blind-command write-up (0) | 2024.10.02 |
[Dreamhack] web-ssrf write-up (0) | 2024.09.25 |
[WebGoat] 실습 환경 종료 후 컨테이너 재실행 (0) | 2024.09.25 |