XSS Challenges
http://xss-quiz.int21h.jp/
Stage #13
Hint:style attribute;要用到style属性,在style属性中有个expression属性可以来完成,但是只能是IE6以下的浏览器才支持;
将浏览器切换到IE5兼容模式,然后输入payload
Stage #14
Hint:对url、script、eval、expression做了过滤,将这些单词转换成xxx,我们无法通过大小写、双写绕过,但是可以用注释绕过;
Stage #15
Hint:document.write();
查看返回;
发现直接返回在<script>标签中,直接输入payload;
查看源码发现<、>被编码了,因为返回直接是在script标签中,所以我们可以通过编码绕过,script可以执行编码过的内容,这里我们采用unicode编码;
Stage #16
Hint:多了一个过滤,将\x转换成\\x;好像我之前的方法同样适用;
Stage #17
Hint:多字节字符以及要用旧版IE,先测试一下返回;
两个参数均返回在value属性中,注意闭合引号;
发现引号被过滤,<、>也均被过滤,那么考虑直接用onmouseover等属性来代替<、>,根据提示本题存在宽字节漏洞,又因为本题存在两个参数,那么我们将第一个value的后面的引号用宽字节吃掉,后面的value的第一个引号就会变成第一个value第一个引号的闭合引号,我们直接在第二个参数输入payload即可;
发现未成功,原理应该是对的,此处可能是IE版本的缘故;
Stage #18
Hint:ascii高比特位的问题,去查了一下原来在IE8之前,浏览器会将8位的二进制只取7位来解释!先测试一下返回;
返回在value属性中,先试一下正常闭合引号的payload;
可以发现引号、<、>均被过滤了,那么我们试着改变其ASCII码的高位;
- <的16进制是3C,二进制是0011 1100,那么将高位的0改成1后变成1011 1100,即BC;
- >同理变成BE;
- “同理变成A2;
最后因为IE版本的问题并没有成功;
END~