1번
Level 1은 alert()으로 팝업창을 띄우면 풀리는 문제입니다.
입력창에 Hello라고 입력하고 Serch 버튼을 눌러보니
사용자가 입력한 값이 GET 방식으로 전달되는 것을 확인할 수 있었습니다.
더 자세한 분석을 위해 코드를 확인해보았습니다.
사용자가 검색하려고 입력한 값이 query라는 변수에 담기고 그 변수가
message에 들어가는 것을 확인할 수 있었습니다.
HTML에 들어가는 변수를 사용자가 입력할 수 있는 취약점을 이용하여
입력창에 <script>alert("XSS");</script>를 넣고 serch를 누르면
다음과 같이 alert 창이 뜨면서 문제가 해결됩니다.
--------------------------------------------------------------------------------------------------------------------------------
2번
alert()으로 팝업창을 띄우면 해결되는 문제입니다.
입력창에 script 구문으로 alert을 띄워보려고 해보았지만
script 구문을 막아놓은 것인지 실행이되지 않았습니다.
힌트를 보니 onerror 이벤트를 이용하라고 하였습니다.
onerror이벤트란?
: 외부 파일을 로드하는 동안 오류가 발생했을 경우 동작되는 이벤트이다.
ex) <img src="image.gif" onerror="myFunction()">
-> 이미지를 로드할 때 오류가 발생하는 경우 myFunction 함수가 실행된다.
onerror 이벤트를 사용하여서
<img src="img.gif" onerror="js:alert("hello")>를 입력해
img파일을 불러오지 못했을 때 alert이 실행되도록 하면
문제가 해결됩니다.
--------------------------------------------------------------------------------------------------------------------------------
3번
이전 문제들과 마찬가지고 스크립트를 삽입해서 alert() 팝업을 띄우면 풀리는 문제입니다.
다만 이전문제들은 입력할 수 있는 창들이 있었지만 이 문제는 입력할 수 있는 창이 없습니다.
이 문제의 특이한 점은 사진 탭을 누르면 사진의 Image 뒤의 숫자와 url의 # 뒤의 숫자가 바뀌는 것입니다.
주소창의 #뒤에 임의의 넘버 100을 넣어보니 위 그림처럼 엑박이 뜨면서
Image 뒤에 제가 넣은 100의 값이 출력됩니다.
소스코드를 확인해봅니다.
스크립트 태그 안 코드를 보면 chooseTab함수의 인자값에 의해서
어떤 이미지가 출력될지 결정되는 것을 볼 수 있습니다.
(즉 # 뒤의 입력값이 이미지 태그에 들어간다)
원하는 값을 넣을 수 있는 num변수를 이용하여 공격할 수 있습니다.
이전 문제에서 onerror를 이용하였던 것 처럼 여기에도 onerror 이벤트를 사용합니다.
#뒤에 'onerror=alert("Hello")>를 입력해주면
<img src='/static/level3/cloud" + num + ".jpg'/>"; 코드가
<img src='/static/levle3/cloud' onerror=alert("Hello")>.jpg'/>가 되면서
onerror 이벤트가 트리거 되어 alert 창을 띄울 수 있게 되는 것입니다.
'1. Web hacking (웹 해킹) > 1) Write UP' 카테고리의 다른 글
[2020.9.26] XSS게임실습 2 (0) | 2020.09.26 |
---|---|
[2020.9.19] XSS 게임실습 1 (0) | 2020.09.24 |
[2020.05.19] XSS Game Level6 (0) | 2020.05.24 |
[2020.04.14] XSS Game Level5 (0) | 2020.04.26 |
[2020.04.07] XSS Game Level 4.Context matters (0) | 2020.04.24 |