Xss-Labs靶场通关详细教程【文图】
摘要:本文详细记录了XSS漏洞的14种绕过方法,包括利用URL参数、闭合标签、事件触发、编码绕过、大小写混淆、双写绕过、HTML实体编码、伪协议、隐藏参数修改、Referer头注入、User-Agent注入和Cookie注入等技术。重点展示了如何通过不同方式绕过过滤机制,如使用onclick事件代替script标签、通过href属性执行JS、利用注释干扰检测等。每种方法都包含具体的payload示
目录
第一关
发现URL里的test与页面上的test会一同变更,考虑通过这个地方形成跨站xss

所以直接插入xsspayload即可:


第二关
直接输payload发现没有结果
看看源码:

重新输入payload:"><script>alert(1)</script> 闭合前面的原标签

第三关
直接输入payload没结果
看看源码:
发现转义了符号<>
想办法绕过:源码中使用的是单引号,于是乎构造一个不要<>的payload为上策,并且要闭合原标签
payload: ' onclick = ' alert(1)
源码就会变成:

第四关
直接输入paylaod也是没有结果,看源码:

发现<>直接没了,应该是连转义都不给你转义了,直接过滤掉啦!想办法绕过,这里使用的是双引号,闭合原标签,然后用onclick
payload: " onclick = " alert(1)

第五关
直接输入payload也不行,看源码:
于是键入 ' " < > <script> onclick 这几个元素查看过滤信息,查看网页源代码,查看过滤点,发现过滤 script和onclick,又尝试换大小写绕过,还是不成功。

绕过方法:既然不能用输入框鼠标事件了,那我们可以用另外标签(超链接)
<a href="javascript:alert(1)">来实现,当然也要先闭合原标签。
xss语句payload:"><a href="javascript:alert(1)">111

第六关
直接输入 ' " <> <script> onclick href这几个元素,看看源码:

发现script与onclick与href都被过滤啦!那就试试大小写绕过。
payload: "><ScripT>alert(1)</ScripT>

第七关
直接输入 ' " <> <script> onclick href这几个元素,看看源码:

发现直接把script , on , href都替换为空了,换大小写绕过,还是被替换,那就换双写绕过,发现可以成功绕过。
payload: "><a hrhrefef=javascrscriptipt:alert(1)>11

当然肯定也可以:
payload: "><scscriptript>alert(1)<scscriptript>

第八关
直接输入 ' " <> <script> onclick href这几个元素,看看源码:

发现该过滤的基本都过滤了,双写大小写也不行。
但是发现输入的内容储存在<a>标签里面,而href可以自动解码html实体编码,直接试试实体编码script中的"r"字母,发现成功绕过。
payload: javascript:alert(1)

第九关
直接输入 ' " <> <script> onclick href这几个元素,看看源码:
发现该过滤的都过滤了,试试伪协议放入<a>标签内

发现<a>标签处显示:链接不合法
合法的URL格式至少应该带有http://
把http://加进末尾处试试看:

发现javascript还是被过滤,想到继续使用上一关的方法,实体编码其中的r字母:

发现友情链接点不动,可能是http://与javascript互相干扰了,影响前面的JS代码,所以要在http://前面添上注释符号//:

第十关

上来发现没有可以传参的地方,随意在URL输入111,看源码:

发现有三个Input被隐藏了。
那在hackerbar插件上把这三个参数都带上:

继续查看源码:
发现只有t_sort参数的值789被传入了

尝试传入<script>alert(1)</script>到t_sort处:


发现<>被过滤了,那就改用onclick事件触发,一样要闭合前面原标签:
注意这里的type="hidden",要把它改成type="text"
payload: &t_sort=123" type="text" οnclick= "alert(1)

第十一关
上来发现没有可以传参的地方,随意在URL输入111,看源码:

发现有四个Input被隐藏了。
那在hackerbar插件上把这四个参数都带上:

然后看源码:
发现还是t_sort有回显

先测t_sort:
还是上一关的payload,但是发现双引号被实体编码过滤了,没辙,没法闭合前面的原标签。
payload: &t_sort=123" type="text" οnclick= "alert(1)

再试试t_ref,忙猜它是不是指referer头?那就在hackerbar的请求体里增加一个referer参数:

payload: &t_sort=123" type="text" οnclick="alert(1)

第十二关
上来发现没有可以传参的地方,随意在URL输入111,看源码:

发现t_ua有显示版本等信息,盲猜是User-Agent,说明本关应该通过User-Agent传值,于是修改User-Agent信息里添加onclick事件,即可绕过:
payload: &t_sort=123" type="text" οnclick="alert(1)

第十三关
上来发现没有可以传参的地方,随意在URL输入111,看源码:

这里多了t_cook参数,盲猜是cookie传参。
这里注意一个细节,那就是cooki传参的格式,打开检查:
发现cookie的传参格式是:user=.....

接下来继续在hackerbar构造文本框,使用onclick事件,记得带上“user=”的格式,成功绕过。
payload: user=&t_sort=123" type="text" οnclick="alert(1)

一般Xss攻击绕过手法主要就是以上这些。
更多推荐


所有评论(0)