사이트 주소 : http://xss-quiz.int21h.jp
11번 문제입니다.
[문제 접근]
우선, 앞 문제들에서 사용한 기본적인 XSS 공격 구문을 넣어보겠습니다.
공격은 실패하였습니다.
프록시 도구로 Response를 확인해보면, script가 xscript로 치환되어 실행되지 않은 것으로 보입니다.
필터링을 하고 있어 우회가 필요할 것 같네요.
우회하기 위해 아래 XSS Cheat Sheet를 참고하면 여러 XSS 공격 구문을 확인할 수 있습니다.
https://gist.github.com/kurobeats/9a613c9ab68914312cbb415134795b45
onfocus 활용하여 공격을 시도해보겠습니다.
onfocus가 onxxx로 치환되어 공격이 실패하였습니다.
a 태그를 활용하여 공격을 시도해보겠습니다.
삽입된 test 문자열을 누르면서 기대를 해보겠습니다.
아쉽지만, 공격이 실패했습니다.
아래 부분의 메시지를 보면 javascript가 javaxscript로 변환되어 방어가 되고 있네요.
font 구문을 활용하여 공격을 시도해보겠습니다.
font 구문의 style이 stxxx로 변환되어 방어가 되고 있습니다.
이전 문제까지 했던 구문들은 다 필터링 되고 있는 것 같습니다.
이 쯤에서 Hint를 한 번 확인해보겠습니다.
역시 아래처럼 여지껏 시도한 구문은 전부 차단되고 있습니다.
그럼 인코딩 방법을 사용해보겠습니다.
[문제 정답]
정답 : "><A href="javascript:alert(document.domain)">test</A><"
HTML HEX(16진수) 인코딩 방법을 사용해보겠습니다.
아래의 ASCII 표를 보면 Hx값을 알 수 있고 HTML HEX 인코딩을 하려면,
진수값 형태로 사용하면 됩니다.
예를 들어, j를 표현하려면 j 이렇게 되겠죠.
(참고로 아래 표의 Html에 나온 값들은 10진수 기준의 HTML 인코딩 값입니다. 
진수값 형태로 표현되고 있습니다.)
"><A href="javascript:alert(document.domain)">test</A><"
위 공격 구문 중에 필터링되고 있는 javascript를 인코딩하여 공격 시도하겠습니다.
jacascript가 javaxscript로 치환되는 것을 우회하기 위한 시도 입니다.
ASCII 표를 참조하여 아래처럼 HTML Hex 인코딩을 합니다.
test 문자열이 삽입되게 되고,
test를 누르면,
팝업에 도메인 주소가 나타납니다. 정답!
Congratulations!! 다음 스테이지로 넘어가시죠~
이 문제는 HTML Hex Encoding을 활용하여 우회하는 것이 포인트 입니다.
참고로 URL 인코딩 (% 형태)와 유니코드 인코딩 (%u 형태) 도 존재합니다.
[XSS Challenges] Stage #12 풀이 (0) | 2020.07.03 |
---|---|
[XSS Challenges] Stage #10 풀이 (0) | 2020.07.03 |
[XSS Challenges] Stage #9 풀이 (0) | 2020.06.27 |
[XSS Challenges] Stage #8 풀이 (0) | 2020.06.27 |
[XSS Challenges] Stage #7 풀이 (0) | 2020.06.27 |
댓글 영역