1.
get方式的的值直接输出来了。
?name=<script>alert(1)</script>
2.
同样没有过滤,不过需要闭合前边的双引号和>。"><script>alert(1)</script>
3.
用htmlspecialchar函数对输入的值做了一个过滤。这个函数过滤 < > " & '但是他这个也存在过滤方法
w3c上的。很明显,他这里没有加ENT_QUOTES,是默认的形式,所以不过滤单引号。另外绕过<>的过滤,就用onXX事件,这里我用onclick。' onclick=alert(1)//
4.
只是过滤了<>,比上一关还简单 。
" onclick=alert(1)//
5.
<script过滤为<scr_ipt,on过滤为o_n,我们可以考虑javascript伪协议。过滤的是<script,script是不会被过滤的。
"><a href=javascript:alert(1)>111</a>
6.
过滤了<script,on,src,data,href。看起来是没有办法,但是他这里忘了对get方式得到的keyword的值进行小写的函数,所以,大小写绕过。
" oNclick=alert(1)//
7.
仔细观察过滤的函数,与前边过滤不用的是,他是把敏感的字符替换为空,而且是替换一次。 双写绕过。"><a hrhrefef=javascrscriptipt:alert(1)>111</a>
注意观察href和script哦。
8.
href都给你写好了。直接javascript,但是要注意script这里过滤了,但是javascript可以进行html编码,注意不能是url编码哟,这样url解析器会识别不出来什么协议。还有就是对script之间的一个或多个单词编码。
javascript:alert(1)
9.
和上一关基本一样,可是你输入中必须有http://,直接把这个http://写这是后边。这样,http://不但出现在了你输入的字符串里,而且被注释掉了不起任何作用。
javascript:alert(1)//http://
10.
他这里有两个get可以得到的参数的值,keyword可以得到,但是代码中并没有有关keyword得到的值的输出。看代码,还可以用t_sort得到值,我们可以构造script的方式来让他产生弹框。构造:"><script>alert(1)<script><"
(注意前后的闭合) 。但是这里过滤掉了<>,所有考虑onclick事件,值得注意的是:input的type属性不是text,而是hidden,这意味我们不能通过点击输入框来让他弹框。所以我们还有加一条type="text",然后注释掉type=hiden。
t_sort=" onclick=alert(1) type=text//
11.
和上一题一个思路,只不过注入点到了http_reference,抓包,修改Referer的值
Referer: " onclick=alert(1) type=text//
12.
抓包修改user-angent的值
User-Agent:" onclick=alert(1) type=text//
13.
抓包修改cookie的值,user=不要删除了哟
Cookie: user=" onclick=alert(1) type=text//
14.
没看懂。。。
15.
也不会
16.
过滤了空格,script,/。我们可以想到用回车或者换行的html编码来绕过。%0a,%0d。
这里讲一下为什么要过滤/,因为他不想让你用必须闭合的标签。比如<a href></a>
,这里过滤/这种就不能用了。但是我根据写html的经验,<a>
位于<center></center>
中,就算没有</a>
他也能够创造链接(这里不影响到其他的内容),并且成功执行。这里,我就偏用<a href>
.
然后我对javascript的某个字符编码,从而绕过script的过滤。对R编码。->r
->%26%23x72%3B
为什么要进行编码?&#都比较特殊,一开始浏览器不会对他进行编码,而#有截断的功能,所以浏览器压根收不到后边的内容,但实现进行url编码,浏览器要先显示这些字符的时候url解码,就完美地还原出&#这符号了,你看第八关为什么可以直接r;我也不是很清楚,做了个小实验:
输入H;get方式那里会自动给他编码,可能提交的方式,或者其他的形式不同吧。?keyword=<a%0Ahref=javasc%26%23%78%37%32%3Bipt:alert(1)>a
下载链接:https://files.cnblogs.com/files/Eleven-Liu/xss练习小游戏.zip