Principle很重要的XSS
分值: 300
原理/原则/理念很重要.....不是所有的xss都叫特仑苏.. ^_^Take it easy!
解题思路:
首先,题目肯定设置了过滤规则,和14题的妖艳贱货不同,它的过滤器很奇怪,慢慢试。
我们先试一下<script>、javascript这种字符串会不会被过滤:
不出意外的被过滤了:
没事,超链接标签嘛,根据14题的思路,我们尝试闭合href属性,构造一波onmouseover事件:
这样输入试一下:
,很遗憾,结果如下:
哦哟,还是被发现了。走到这里,我们不禁怀疑是不是过滤了alert或者onmouseover这个关键字:那试一下alert有没有被过滤(虽然题目明确说了用alert显现,但是还是要尝试一波,实际操作中谁也不知道alert会不会被过滤掉):
onmouseover同理,可以发现这两个关键字没有被过滤,到这里继续尝试闭合href属性:
尝试14题的解法,猜想过滤器过滤第一个alert之后,字符串后面的东西不会被过滤掉:
然而还是gg,到这里,似乎走到了死路,我连将alert用jsfuck编码之后都尝试了,还是gg,好嘛,灵光一现之下构造如下的输入:alert‘onmouseover=alert(1)>
这次迷之成功:
我是将alert‘和onmouseover之间的空格去掉,就可以了。
下面来分析一下该题的过滤器工作原理:
和14题一样,通过空格分隔,查找alert这个关键字,发现第一个之后后面的就不会再生效,为什么这么说呢,构造如下输入:
该输入在>和alert之间存在一个空格,因此验证了我的猜想。因此只需要在alert‘和onmouseover之间不留空格,过滤器会认为该字符串不等于alert,因此放行。
end.