XSS-LABS（待更新

Level 1

仔细观察，通过修改 name 参数的值，可发现 name 的值
显示在页面上，并且也显示了值的字符长度
插入的位置处于里

Copy


于是尝试构建弹窗

Copy
alert('xss')

弹出弹窗
#反射型 xss

Level 2

进入 Level 2，get 传参
看看源码，可知搜索框的内容通过 get 方式 提交给 level2.php
经过服务器处理，把参数的值插入 h2 标签中，以及添加到 input 中的 value 属性内
输入恶意代码，发现出错
查看网页源码，发现 h2 处的恶意代码被编码
查看服务端源码，

Copy
没有找到和 alert('xss') 相关的结果.



发现使用htmlspecialchars函数处理 keyword 参数
根据观察发现，js 代码处于标签属性中，所以只能考虑如何执行属性值中的恶意代码
想要执行，可以将属性中的引号和标签闭合

Copy
payload："> alert('xss') //

alert('xss') //

Level 3

用以上方法试一试，未能成功
查看网页源码
此时 h2 和 value 值处的恶意代码被编码，估计两参数均使用了htmlspecialchars()函数

Copy
没有找到和"> alert('xss') //相关的结果.



故考虑onfocus 事件的特殊性

Copy
payload：'onfocus=javascript:alert('xss') > //



懂的不多，看看网上是怎么讲的

Copy
最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以

输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此

点击当前页面的输入框就可以完成弹框了。

Less 4

简单试试

Copy
没有找到和 alert('xss') 相关的结果.



h2 处被编码，value 值 ' <' '> ' 被消去
试试 Less 3 的方法，不行
仔细想一想，发现 Less 3 和 Less ４的区别在于 value＝后的单引号（＇）与双引号（＂）