Xss game 풀이
level1
level2
level3
level4
level1 풀이
alert()을 띄워야 한다.
쿼리에 <<<>>> 등을 입력했을 때 입력한 그대로 출력한다.
그래서 입력칸에 <script>alert(1)</script> 을 입력해주면 페이지에 스크립트가 삽입되면서 문제가 풀린다.
level2 풀이
이번에는 그대로 <script>alert(1)</script> 을 입력했을 때, 페이지에 삽입은 그대로 되는데,
스크립트가 실행이 되지 않는다.
힌트:
1. Note that the "welcome" post contains HTML, which indicates that the template doesn't escape the contents of status messages.
2. Entering a <script> tag on this level will not work. Try an element with a JavaScript attribute instead.
3. This level is sponsored by the letters i, m and g and the attribute onerror.
img태그의 onerror속성을 이용해서 스크립트를 실행해야 하는 것 같다.
<img src="./mandu" onerror="alert(1)">
scr파일을 불러올 떄 해당 파일을 찾을 수 없게 해서 에러를 발생시키도록 한다.
level3 풀이
입력할 수 있는 칸은 url칸밖에 없는 것 같다.
페이지 소스를 확인했다.
1
2
3
4
5
|
function chooseTab(num) {
// Dynamically load the appropriate image.
var html = "Image " + parseInt(num) + "<br>";
html += "<img src='/static/level3/cloud" + num + ".jpg' />";
$('#tabContent').html(html);
|
cs |
이 num에 들어가는 것을 적절히 입력해주면 될 것 같다.
0.jpg' onerror="alert(1)" '
직접 f12눌러서 입력값이 어떻게 들어갔는지 확인하면서 해보면 된다.
level4
힌트 :
1. Take a look at how the startTimer function is called.
함수가 어디서 호출되는지를 보았다.
1
2
3
4
5
6
7
|
<body id="level4">
<img src="/static/logos/level4.png" />
<br>
<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />
<br>
<div id="message">Your timer will execute in {{ timer }} seconds.</div>
</body>
|
cs |
<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />
t
{{timer}}에 입력한 값이 들어간다. 아래와 같이 되도록 하면 될 것 같다.
<img src="/static/loading.gif" onload="startTimer('1'); alert('1');" />
input = 1'); alert('1
level5
level6