@ 4번 문제
인젝션 처럼 값을 조작해서 스크립트를 실행하게 하는 문제였다.
(문제 화면)
버튼을 클릭하면 타이머가 동작한다.
(타이머 동작)
3초가 지나고 다시 돌아온다.
잘보면 URL에 timer변수로 3이라는 값이 전달되고 있는것이 보인다.
GET방식으로 변수가 넘어가고있는데 코드를 보면 확인 할 수 있다.
(페이지 코드)
코드를 보면 GET방식으로 timer 변수가 넘어간다.
그래서 URL에 timer=3으로 입력하고 전달해도
(타이머 동작)
타이머가 동작한다.
이제 타이머 페이지의 코드를 보겠다.
(타이머 페이지 코드)
여기서 이미지 태그를 보면 바로 눈치챌수 있다.
바로 onload 부분에 우리가 입력한 timer 값이 들어가게 되니 여기를 잘 조작해서 입력하면
스크립트가 실행되게 할 수 있는 것이다.
{{ timer }} 이렇게가 변수로 입력이 되므로
timer=1');alert('attack
이라고 값을 전달하게 되면
onclick="startTimer('1');alert('attack');" 이렇게 완성되어 스크립트 코드가 실행 될 것이다.
(인젝션)
하지만 동작하지 않았다..
실행된 초 앞에 {{timer}} 값을 보면 1') 까지만 들어갔는데..
; (세미콜론)부터가 입력되지 않은것이다.
문제는 ; (세미콜론)을 URL 인코딩 해서 보내줘야한다. 세미콜론 퍼센트 앤퍼센드 등등
가끔 URL인코딩으로 보내줘야할 때가 있다.
; -> %3B로 바꿔서 입력해주니 아래와 같이
;(세미콜론)으로 잘 전달이 되어 우리가 원하는 {{ timer }} 값이 되었다.
(문제 해결)
그리고 스크립트 코드가 실행되었다.
문제 해결!
'WarGame > XSS Game' 카테고리의 다른 글
XSS GAME - level 6 (1) | 2017.04.03 |
---|---|
XSS GAME - level 5 (0) | 2017.04.03 |
XSS GAME - level3 (0) | 2017.03.31 |
XSS GAME - level2 (0) | 2017.03.31 |
XSS GAME - level1 (0) | 2017.02.15 |