티스토리 뷰

728x90
반응형

출처 : http://xss-game.appspot.com/level4

 

4단계 문제도 마찬가지로 alert 가 실행되면 된다. 우선 위 문제는 input 란에 숫자를 입력하고, 입력된 숫자만큼 기다리다가 confirm(확인) 창이 나오는 기능을 한다. 예를 들어 3이라고 입력하고 Create timer 버튼을 누르면 로딩 아이콘이 나오면서 3초간 기다린 뒤에 "Time is up!" 이라는 내용이 들어있는 confirm(확인) 창이 나오게 된다.

 

 

일단 입력란이 하나밖에 없고, XSS 특성상 입력한 내용이 script injection 가능한 곳이 된다. 그래서 3이라고 입력했을 때 로딩 아이콘이 나오면서 "Your timer will execute in 3 seconds." 문장이 나오는데, 여기서의 "3"에 대한 소스코드를 봐보자. 일단 3이라고 하면 3초밖에 안 기다려서, 넉넉하게 소스코드를 살펴볼 수 있도록 30초로 입력해보았다.

 

 

우리가 입력한 30이라는 숫자는 img 태그에도 들어가고, div 태그에도 들어가는 걸 알 수 있다. 가장 먼저 보이는 img 태그에서 script 를 삽입해보자. 아래와 같이 입력하면 로딩 아이콘(이미지)이 나오면서 onload 속성에 있는 javascript가 실행되지 않을까?

startTimer('30');alert(1);

그래서 input 에 아래와 같이 입력해보자. 그럼 예상대로라면 로딩 아이콘(이미지)이 나오자마자 alert 가 실행될 것이다.

3');alert('1

 

위와 같이 script injeciton 에 성공했음을 알 수 있다. 결과 소스코드는 아래와 같다.

 

 

 

- 끝 -

728x90
반응형
댓글