靶场地址
http://portswigger.net/web-security/all-labs#cross-site-scripting
第一关:反射型
1.发现搜索框直接注入payload
<script>alert(111)</script>
2.出现弹窗即说明攻击成功
第二关:存储型
1.需要在评论里插入payload
2.发表以后返回首页就会出现弹框
第三关:DOM型(在document中)
1.dom型只发生在前端,所以直接查看网页源代码,发现输入的字符串会被存进str进行拼接
2.构造payload
"><svg οnlοad=alert(111)>
第四关:DOM型(在html中)
1.查看网页源代码,发现字符串被包裹在网页代码里
2.构造payload,使src的值无效后调用alert函数
<img src=1 οnerrοr=alert(1)>
第五关:DOM型(在href中)
1.要求在submit feedback界面找xss
2.查看网页源代码,发现返回的路径是可以修改的
3.构造payload,在href后添加值
javascript:alert(document.cookie)
第六关:DOM型(利用hashchange模块)
1.直接查看源代码,发现可以通过修改hash值向受害者发送攻击代码
2.构造payload
<iframe src="https://自己的IP.web-security-academy.net/#" οnlοad="this.src+='<img src=x οnerrοr=print()>'"></iframe>
3. step 1:验证攻击是否有效攻击
step 2:发送给受害者,造成攻击
第七关:反射型(html编码)
1.在输入框中随便输入字符,查看其在源码中的位置,发现在value后
2.输入payload,将鼠标移动到搜索框处就会触发弹窗
"οnmοuseοver="alert(111)
第八关:存储型("的html编码)
1.随机留下评论后在源码中查看名字所在位置,发现在<a>标签中,同时也说明可以更改href值
2.接下来在有漏洞处插入payload
3.返回评论区点击第二次用户名,出现弹窗证明攻击成功
第九关:反射型(<>过滤)
1.插入payload后,发现源码中过滤了尖括号
2.重新构造payload,使用不带尖括号的alert函数
3.没有出现弹窗,发现后面还有个分号,需要再添加内容
aaa';alert(111);let myvar='test
也可以直接用单引号闭合
'+alert(1)+' 或 '-alert(1)-'
以上初级关卡全部结束。