Low级别:
1.点击Select提交数据,发现URL中多了一个GET参数
2.接着我们直接将URL中的default
参数的值修改为<script>alert('rootkit')<script>
然后回车完成,可以看到页面直接就触发了我们的代码,弹窗了
3.接着我们按F12打开浏览器审查元素,查看我们的这个漏洞点,可以看到,我们的代码已经被作为一个元素通过JS插入到了
页面当中,整个流程都是通过上面的JS代码实现的
Medium级别:
1.在Medium级别当我们直接将English改为<script>alert(1)</script>
时整个script标签都被过滤了
2.接着我们查看输出点并进行闭合标签,F12打开审查元素,在查看器中搜索English
可以看到输出点有两个一个是以字符串的方式输出在option标签对当中,一个是在value属性中输出,所以我们
需要从value属性中逃逸出来
构造Payload为:English"
发现value属性当中存在URLEncode,将我们的"
编码成了%22
所以我们使用"
实体编码来代替"
payload为:English"
可以看到此时双引号正确的解码了
接着我们在输入一个XSS代码看是否存在过滤
paylaod为:"<script>alert(1)</script>
可以看到直接弹窗了
3.我们还可以尝试跳出检测范围,这里因为DOM添加的新标签是在Select标签当中进行生成的
我们尝试直接闭合select标签
</select><svg onload=alert(1)>
最后发现当闭合到select标签时可以触发代码了
在这里插入图片描述
High级别:
1.来到High级别,无论我们输入什么都会被初始化为English
2.接着我们按F12打开浏览器审查元素,查看其输出位置,可以看到,value属性当中也有option标签当中也有
3.首先我们先尝试在value属性中作业,输出的English
被一对"
包围,此时我们可以尝试闭合左右两边的"
使用payload:English"
可以看到此时我们输入的双引号在value属性当中被进行了URLEncode编码,变成了%22
接着在尝试使用实体编码扰乱它的过滤规则,双引号的实体编码为"
构造payload为
English"
可以看到我们输入的双引号成功解码了,并没有被进行URL编码
此时我们在闭合右边的"
在两个引号中间添加上
payload为:English"<script>alert(1)</script>"
可以看到直接就触发了弹窗
查看代码位置可以看到我们输入的XSS代码被插入到了option标签当中
接着我们在尝试只闭合左边的option标签使用>
表示为>
payload为:English><script>alert(1)</script>
,可以看到也弹窗了