반응형
문제 링크
https://xss-game.appspot.com/level6
목표 & 사용 도구
목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다.
사용도구: 개발자 도구
문제 풀이 - https://xss-game.appspot.com/level6
- 문제 페이지에 접속합니다. Fragment 식별자( # )(identifier) 기호 뒤에 오는 문자열이 화면에 출력되는 것을 확인합니다.

- Fragment 식별자 기호 뒤에 임의의 문자열을 입력해 보면 사용자의 입력 값이 화면에 반영되고 있음을 알 수 있습니다.

- 개발자 도구의 Elements 탭에서 코드를 확인해 보면 사용자가 입력했던 값들이 head 태그 안 script 태그의 src 속성 값으로 들어가고 있는 것을 알아낼 수 있습니다. 또한 입력했던 script 태그가 남아 있는 것으로 보아 사용자가 Fragment 식별자 뒤에 문자열을 입력하면 그것을 통해 script 태그를 삽입하고 있는 것도 알아낼 수 있습니다.

- Fragment 식별자 기호 뒤에 특수문자 4개 < , ' , " , > 를 삽입하여 결과를 확인해 보면 특수문자가 인코딩 되고 있으며 추가로 더블 쿼터를 이용하여 태그를 벗어나 스크립트를 삽입하는 행위는 할 수 없다는 것도 알 수 있습니다.

- 해당 문제는 Data URI 스킴(scheme)을 이용하여 xss 공격을 시도할 수 있습니다. 아래 페이로드를 삽입합니다.
[페이로드(입력 값)]
| 페이로드 : data:text/javascript,alert('xss') Data URI 스킴은 파일을 별도로 다운로드하지 않고 URL 자체에 데이터를 직접 포함 시키는 방식을 말합니다. 구조는 다음과 같습니다. *** 구조 data:[MIME 타입][;base64],<data> *** 페이로드 분석 data: -> Data URI 스킴 text/javascript -> 데이터를 javascript로 처리합니다. alert('xss') -> <data> 부분으로 실제 데이터를 의미합니다. 페이로드에서는 alert 함수를 의미합니다. 해당 CTF에서는 사용자가 script 태그가 head 태그에 삽입되며 Fragment 식별자 뒤에 온 문자열들이 삽입된 script의 src 속성 값으로 들어가는 것을 알 수 있었습니다. 따라서 해당 페이로드를 삽입하면 Data URI 스킴을 통해 javascript를 실행시키며 xss 공격을 시도할 수 있습니다. |

- 페이로드를 삽입한 뒤 결과를 확인해 보면 스크립트가 실행되며 XSS 공격에 성공하게 됩니다.(문제 클리어)

반응형
'[WEB] CTF & Wargame > xss-game(CTF)' 카테고리의 다른 글
| xss game(CTF) - 문제 풀이 (5/6) (0) | 2026.02.09 |
|---|---|
| xss game(CTF) - 문제 풀이 (4/6) (0) | 2026.02.06 |
| xss game(CTF) - 문제 풀이 (3/6) (0) | 2026.02.05 |
| xss game(CTF) - 문제 풀이 (2/6) (0) | 2026.02.05 |
| xss game(CTF) - 문제 풀이 (1/6) (0) | 2026.02.02 |