一、反射型、存储型、DOM型XSS特点和区别
1.反射型
攻击者向表单写入恶意代码,表单会提交给服务器,恶意代码会经过服务器,但并不保存,后由服务器发回客户端。
特点:非持久、经过服务器
2.存储型
通过在有提交表单的位置中插入恶意代码,将代码上传时服务器,存储型XSS攻击将恶意代码存储在服务器端或数据库中,当其他用户访问该网页时,恶意代码会被执行,导致用户的信息被窃取或造成其他安全问题。
特点:持久,经过服务器
3.DOM型
攻击者通过向表单中写入恶意代码,将恶意代码注入到用户的浏览器中,浏览器会执行恶意代码,相当于只是改了前端。
特点:非持久,不经过服务器
二、XSS 的fuzz字典或字典生成工具
GitHub - c0ny1/upload-fuzz-dic-builder: 上传漏洞fuzz字典生成脚本
三、XSS挑战靶场打靶
1.第一关:
直接插入恶意代码<script>alert('1')</script>即可
2.第二关:
通过查看文本框对应源代码时发现插入的恶意代码被识别成了字符串,故可以通过闭合元来的字符串引号和标签实现注入,即在恶意代码前加入”>即可得到”><script>alert('1')</script>。
3.第三关:
首先插入'> <script>alert()</script>,发现有字符被转换为html实体。故猜测php上有htmlspecialchars()函数,则不能插入<>,只用单引号,利用onmouseover函数构建一个新的测试代码:' οnmοuseοver=javascript:alert() '
4.第四关:
将第三关的代码插入,查看前端源码,发现其使用的双引号,则修改为" οnmοuseοver=javascript:alert() "
5.第五关:
插入第四关源码,发现onmouseover被添加一个下划线,则有可能被过滤,则使用'> <script>alert()</script> <'发现<>可在源码中显示,则尝试通过a标签添加超链接的命令"> <a href=javascript:alert()>test</a> <"
点击添加的test链接,弹出提示