XSS Game level 4

Wargame/XSS Game 2018. 3. 30. 18:13

문제에 들어가보면 다음과 같이 입력값을 받는 부분이 있다.



코드를 보면 입력값이 img 태그의 onload 이벤트 핸들러를 통해 실행되는 startTimer란 자바스크립트 함수에서 사용되는걸 볼 수 있었다.


<!doctype html>

<html>

  <head>

    <!-- Internal game scripts/styles, mostly boring stuff -->

    <script src="/static/game-frame.js"></script>

    <link rel="stylesheet" href="/static/game-frame-styles.css" />


    <script>

      function startTimer(seconds) {

        seconds = parseInt(seconds) || 3;

        setTimeout(function() { 

          window.confirm("Time is up!");

          window.history.back();

        }, seconds * 1000);

      }

    </script>

  </head>

  <body id="level4">

    <img src="/static/logos/level4.png" />

    <br>

    <img src="/static/loading.gif" onload="startTimer('1');" />

    <br>

    <div id="message">Your timer will execute in 1 seconds.</div>

  </body>

</html>


일단 화면에 뿌려주는 부분에서 공격을 해보면 다음과 같이 <,>,',"이 모두 필터링당하고 있는걸 볼 수 있었다.


html 영역내에서는 공격이 불가능하고 자바스크립트내부에서 해당변수가 사용되는 영역에 alert를 삽입해주면 된다.

인자값으로 받아서 parseInt의 인자로 쓰는영역에 alert를 넣어줬다.


payload = ');alert(1);//



 











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

XSS Game level 6  (0) 2018.04.01
XSS Game level 5  (0) 2018.03.31
XSS Game level 3  (0) 2018.03.30
XSS Game level 2  (0) 2018.03.29
XSS Game Level 1  (0) 2018.03.29
블로그 이미지

JeonYoungSin

메모 기록용 공간

,