XSS challenges 7,8,10,15입니다. 11~14가 없는 이유는 11번은 문제가 날아갔고 12~14번은 구버전 IE 브라우저에서만 풀수 있다고 합니다.
7번
7번은 6번과 매우 비슷했습니다. 그런데 6번처럼 입력을 하면
위처럼 더블 쿼터가 남고 뒷 부분 괄호가 충족이 되지 않는 것을 알 수 있습니다. 그래도 이벤트 핸들러는 정상적으로 넣을 수 있기 때문에 조금만 수정해서 문제를 해결했습니다.
8번
8번 문제입니다. 버튼을 보니 링크를 만들어주는 버튼인 거 같긴합니다. 그래서 hi를 입력한 뒤 소스코드를 확인했습니다.
href 부분에 hi가 들어간 것을 알 수 있습니다. 이 형태는 XSS game 2번을 해결할 때 썻던 a 태그에 속성을 넣어준 것과 매우 유사합니다.
<a href="javascript:alert(1)">Link</a> 이것과 그냥 같은 것이라고 생각하면 됩니다. 그래서
입력 창에 javascript:alert(document.domain)를 넣어줘서 클릭하면 alert가 실행되고 문제를 해결했습니다.
10번
10번입니다. 항상 썻던 페이로드인 "><script>alert(document.domain);</script> 를 넣어보니 아래처럼 소스코드에 뜹니다.
아마 domain이라는 글자가 필터링되는 것 같습니다. 그래서 sfw6번이나 sql injection할 때 썻던 우회방법인 domain사이에 domain을 넣어주어 alert를 띄웠습니다.
정답 : "><script>alert(document.dodomainmain);</script><"
15번
15번은 document.write()를 사용하는 문제입니다. document.write html에 인자에 적힌 값을 적는 함수(?)라고 할수 있습니다. 여기서 보면 <,> 문자 2개가 필터링되어 있는데, 인터넷에 찾아보니 <,>를 \x3c, \x3e로 입력해도 document.write에서는 <,>로 인식한다고 합니다. 그런데 여기서 문제의 코드가 \x를 x로 필터링되기 때문에 앞에 \를 하나 더 붙여줘서 페이로드를 완성했습니다.
정답 : \\x3cscript\\x3ealert(document.domain); \\x3c/script\\x3e
그러면 아래처럼 저희가 원하는 내용을 적을 수 있습니다.
'웹 > xss' 카테고리의 다른 글
XSS challenges 1~6 (0) | 2021.01.09 |
---|---|
XSS-game (0) | 2020.12.30 |