starting point

xss-game-level 4 본문

WarGame_WriteUp/XSS-Game

xss-game-level 4

dundole 2020. 2. 19. 12:10

[사진1]
[사진2]

입력된 시간만큼 타이머가 만들어지는 웹사이트이다. 또한 입력한 시간이 추력되느 것을 알 수 있다.

[사진3]

입력한 시간이 지나면 위와 같은 알림창이 나타난다.

 

[사진4]

html코드를 보면 입력한 숫자가 startTimer()의 매개변수가 되고, <div>태그의 문자열로 입력되는 것을 볼 수 있다.

<div>태그를 대상으로 우선 공격해 보았다.

<script>alert(1);</script>

[사진5]

스크립트 문이 그대로 출력되며 경고창이 뜨지 않는 것을 볼 수 있다.

 

[사진6]

<div>태그안에 <script>태그가 그대로 출력된 것을 보면 "<"를 이스케이프한 것으로 추측된다. 그렇다면 startTimer()함수의 매개변수를 공략할 수 있다.

');alert(1);//를 입력했다.

 

[사진7]

startTimer()함수를 끝마치고 alert(1)함수를 넣은 후 뒤에 있는 코드는 주석으로 날림으로써 원하는 코드를 실행시킬 수 있게 되었다.

[사진8]


이 문제는 사용자가 전달한 값을 그대로 이용하는 것이 위험하다는 것을 보여준다. 이러한 취약점은 입력된 문자열을 검증하지 않기 때문에 발생한다. 이를 위해서 우선 특수문자들을 escape처리를 하거나 서버 단에서 예외를 처리하여 입력할 수 없게 하여 취약점을 보완해야 한다.

'WarGame_WriteUp > XSS-Game' 카테고리의 다른 글

xss-game-level 6  (1) 2020.02.19
xss-game-level 5  (0) 2020.02.19
xss-game-level 3  (0) 2020.02.19
xss-game-level 2  (0) 2020.02.19
xss-game-level 1  (0) 2020.02.19