XSS Challenge(2)

XSS Challenges

http://xss-quiz.int21h.jp/

Stage #13

XSS Challenge(2)

  Hint:style attribute;要用到style属性,在style属性中有个expression属性可以来完成,但是只能是IE6以下的浏览器才支持;

 XSS Challenge(2)

 XSS Challenge(2)

  将浏览器切换到IE5兼容模式,然后输入payload

 XSS Challenge(2)

Stage #14

 XSS Challenge(2)

  Hint:对url、script、eval、expression做了过滤,将这些单词转换成xxx,我们无法通过大小写、双写绕过,但是可以用注释绕过;

 XSS Challenge(2)

Stage #15

 XSS Challenge(2)

  Hint:document.write();

  查看返回;

 XSS Challenge(2)

  发现直接返回在<script>标签中,直接输入payload;

 XSS Challenge(2)

 XSS Challenge(2)

  查看源码发现<、>被编码了,因为返回直接是在script标签中,所以我们可以通过编码绕过,script可以执行编码过的内容,这里我们采用unicode编码;

 XSS Challenge(2)

Stage #16

 XSS Challenge(2)

  Hint:多了一个过滤,将\x转换成\\x;好像我之前的方法同样适用;

 XSS Challenge(2)

Stage #17

 XSS Challenge(2)

  Hint:多字节字符以及要用旧版IE,先测试一下返回;

 XSS Challenge(2)

  两个参数均返回在value属性中,注意闭合引号;

 XSS Challenge(2)

  发现引号被过滤,<、>也均被过滤,那么考虑直接用onmouseover等属性来代替<、>,根据提示本题存在宽字节漏洞,又因为本题存在两个参数,那么我们将第一个value的后面的引号用宽字节吃掉,后面的value的第一个引号就会变成第一个value第一个引号的闭合引号,我们直接在第二个参数输入payload即可;

XSS Challenge(2)

XSS Challenge(2)

  发现未成功,原理应该是对的,此处可能是IE版本的缘故;

Stage #18

 XSS Challenge(2)

  Hint:ascii高比特位的问题,去查了一下原来在IE8之前,浏览器会将8位的二进制只取7位来解释!先测试一下返回;

XSS Challenge(2)

  返回在value属性中,先试一下正常闭合引号的payload;

XSS Challenge(2)

  可以发现引号、<、>均被过滤了,那么我们试着改变其ASCII码的高位;

  • <的16进制是3C,二进制是0011 1100,那么将高位的0改成1后变成1011 1100,即BC;
  • >同理变成BE;
  • “同理变成A2;

 XSS Challenge(2)

XSS Challenge(2)

  最后因为IE版本的问题并没有成功;

   END~

xss

相关推荐