XSS Challenges解析:
1.
什么过滤也没有,而且是直接输出。
即可通过
2.
直接输入第一关不行,查看源代码:
发现了这么一行代码,闭合语句试试,输入:">//
3.
大家仔细看这个题目,输入的地方有两处,只不过第二处只能从四个国家里面选择一个,但是通过burp抓包,我们可以解决。
先上来按照一般的思路,就直接在输入框里面输入:
我们查看源代码可以看到这个,
说明对我们直接输入的代码进行了过滤。但是看后边的这个USA,他是不是也过滤了呢,我们用burp抓个包。
将Japan的值直接修改为
发送,通过,USA并没有过滤。
4.
抓个包,发现提交三个参数。前两个肯定过滤了,不然给你第三个参数干啥。
发送后,看看源码。
真的是,第三个参数value没有过滤,只不过这个没有直接在页面上看出来。再发现就是闭合input就行了。构造:">//
5.
抓个包
原来是限制了长度,把3改成100,然后查看源代码,闭合input,和上边的一样。">//
6.
发现把<>都进行了编码。看一下hint。event handler attribute:事件处理程序。直接百度。
找到了我想要的答案。
这样正好绕开了<>的输入,构造:" onclick="alert(document.domain);"//
值得一提的是,这个onclick是点击输入框才会弹出来,而不是按钮哟。
7.
输入上一关的内容后,发现双引号被过滤。首先说一下,onclick,value,type这种="",其实可以不用存在双引号。
我们首先把alert()的双引号去掉。
构造:" onclick=alert(document.domain);//
在输入然后search,查看源代码
发现value就剩下一个编码后的双引号。what?我们现在只输入1看看
查看源代码
虽然不知道咋回事,但是我知道value引号不用闭合了。
构造1 onclick=alert(document.domain);//
查看源代码:
这个时候已经成功了,点那个输入框,通过。
8.
JavaScript伪协议,先直接输入javascript:alert(document.domain);
。查看源代码:
什么也不用闭合,就这样就行了,然后点击页面的url,通过。
9.
发现 < > " 都被过滤了。
hint: utf-7编码,先源代码看一下怎么闭合。
" onclick=alert(document.domain)//
utf-7编码:
+AG8AbgBjAGwAaQBjAGsAPQBhAGwAZQByAHQAKABkAG8AYwB1AG0AZQBuAHQALgBkAG8AbQBhAGkAbgApAC8AL-
不行啊,百度xss utf-7,原理:没有指定编码,浏览器以utf-7编码来解析。
而且必须是IE7。都已经被修复的东西,而且IE7谁还用这老古董啊,就不继续研究6了。
过关方法:
百度的,真是会玩。
10.
随便输入,查看源码,闭合语句。search后,再次查看源码:
domain没了。看hint:s/domain//g;估计是正则表达式替换为了空字符串。如果没有循环替换,试一下双写绕过。domadomainin,这样他只替换一次,这个字符串就变成了domain。构造" onclick=alert(document.domdomainain);//
过关.
11.
hint:"s/script/xscript/ig;" and "s/on[a-z]+=/onxxx=/ig;" and "s/style=/stxxx=/ig;"
script转化为xscript,onclick,onload之类转化为onxxx。
前边的都不能用了,不过还有个href。javascript那里虽然有script,但是可以用 制表符,回车符,换行符 来欺骗过滤器。
构造">1
12.
把\x00-\x20 < > " '都过滤掉了。
看别人的wp,
`在 IE下会被解析为引号,所以用这个闭合前边的value。
构造
`
onclick=alert(document.domain);
`