Level 3 시작!
Image 버튼을 누르면 해당 번호의 이미지로 바뀌게 된다. 소스코드를 보며 어떻게 구성되었는지 보자.
각각의 버튼은 클릭 시 chooseTab() 함수로 값을 보낸다. 그리고 tabContent 라는 id 를 통해 이미지 출력을 처리하는 것 같다.
chooseTab() 을 통해 전달된 num 를 통해 html 변수에 num.jpg 를 넣어주고 있다. 그리고 이 html 을 tabContent 를 통해 화면에 출력해준다.
num 의 값을 통해 결과가 출력되는 것은 알았다. 그렇다면 num 라는 값에 어떻게 원하는 값을 넣어줄지를 찾아야 된다. chooseTab() 을 호출하는 곳을 찾아보자.
self.location.hash.substr(1) 은 url 의 # 부분에 있는 값을 가져온다. 따라서 url 에 값을 입력하게 되면 chooseTab() 을 통해 화면에 출력할 수 있다.
이제 url 을 통해 XSS 공격을 수행해보자.
html += "<img src='/static/level3/cloud" + num + ".jpg' />";
입력한 값은 위의 <img> 의 num 부분에 들어갈 것이다. 가장 먼저 onerror 를 통해 alert() 를 실행하는 방법을 생각했다.
입력값 : ' onerror="alert(1)"/>
적용된 img 태그 : <img src='없는 파일' onerror="alert(1)"/>
' 을 통해 src 부분을 닫아줬고, onerror 를 통해 alert(1) 을 실행한 뒤 /> 를 통해 img 태그를 닫아준다.
성공!!
'WarGame > XSS game' 카테고리의 다른 글
XSS game - Level 6 (0) | 2020.08.02 |
---|---|
XSS game - Level 5 (0) | 2020.07.27 |
XSS game - Level 4 (0) | 2020.07.27 |
XSS game - Level 2 (0) | 2020.07.26 |
XSS game - Level 1 (0) | 2020.07.26 |