LEVEL1
观察发现,向服务器传入一个参数name,页面会回显出参数name的值和参数长度
查看源代码
可以看到,值test被插入到<h2></h2>标签之间,猜测为反射型XSS
在<script>里,可以发现,调用alert时,我们就可以运行function()函数
由于不知道服务器端对于提交的敏感字符有没有过滤,所以这里直接在name参数中赋值一个简单的弹窗来进行测试,采用标签注入,注入js代码
name=<script>alert('xss')</script>
查看源代码,可以看到服务器返回了提交的payload
<script>alert('')</script>:XSS测试语句,弹出alert里面的字符串内容
LEVEL2
通过搜索框输入,传入值为test的参数keyword,参数的值直接回显在页面
查看源代码
分析代码
在搜索框内输入<script>alert('xss')</script>
发现页面直接回显出输入的js语句
查看源代码
可以看到在<h2></h2>标签中代码被编码了,但是插入到value参数值中的代码并没有。
js代码在标签属性值中,浏览器无法执行。要执行这里的代码,可以先闭合input标签,然后注入代码。
构造<script>alert('xss')</script>
"><script>alert('xss')</script>
查看源代码
LEVEL3
在搜索框内输入test进行测试
查看源代码
发现页面两处地方回显了值test
发现这两处的代码都被编码了
考虑采用<input>标签的特殊事件来执行js代码
因为标签带有”<"的,因此采用事件,需要闭合标签的属性
' onclick='alert(1)
知识点
LEVEL4
有两处回显
输入<script>alert('xss')</script>测试
1处对代码进行了编码,2处删除了<和>这两个符号
采用事件注入代码
" onclick="alert(1)"
LEVEL5
输入<script>alert('xss')</script>
第二处代码,在r和i之间插入了_符号
采用事件注入,同样插入了_
使用其他标签
"><a href="javascript:alert(1)"