xss-labs靶场(1-5关)
第一关:
第一关很简单,没有什么过滤,直接插入一段javascript的代码即可
<script>alert()</script>
第二关:
首先我们可以先输入第一关的payload进行尝试,发现并没有出现确认框.
我们查看页面的HTML,发现我们输入的payload被引用了,我们可以尝试添加双引号进行闭合;
然后我们就发现确实可以
"> <script>alert()</script> <"
第三关:
先输入一个test,然后在查看网页源代码,我们发现我们输入的test被传入到value里面
我们在试一下上一关的payload,果然不能通过.
我们查看一下源码,没想到符号也被过滤了;
但是htmlspecialchars函数只针对<>大于小于号进行html实体化,我们还可以利用其他方法进行xss注入,这里我们可以利用onfocus事件绕过 .
' onfocus=javascript:alert() '
然后再点击输入框触发onfocus事件即可
第四关
查看一下网站源码
这里的闭合符号是"号,<input>标签,所以我们还能利用onfocus事件,构造payload;
" onfocus=javascript:alert() "
第五关
我们先输入上一关的payload试一试,然后在查看一下网页源代码;
这里发现我们输入的on被替换为了o_n,因此导致了我们输入的payload没有执行;
我们可以试一试换成大写的方法再试一下,发现还是不行,说明源码里有小写字母转换的函数,我们只能换一种xss注入方式来及进行,这里我们考虑到a标签的href属性;
添加一个标签得闭合前面的标签,构建payload.
"> <a href=javascript:alert()>xxx</a> <"
发现页面上确实出现了一个链接,之后点击xxx,触发a标签href属性即可过关;