1. 总结反射型、存储型、DOM型XSS特点和区别
反射型 XSS (Reflected XSS)
特点
攻击者通过构造特定的 URL,将恶意脚本作为参数传递给服务器。
服务器将该脚本反射回用户的浏览器,用户在点击链接后执行。
通常依赖于用户的交互,例如点击链接或提交表单。
存储型 XSS (Stored XSS)
特点
恶意脚本被永久存储在服务器上(如数据库、留言板等)。
当用户访问存储了恶意脚本的页面时,脚本会自动执行。
对用户的影响更大,因为只需一次注入,所有访问该页面的用户都会受到影响。
DOM型 XSS (DOM-based XSS)
特点
攻击发生在客户端,恶意脚本通过修改 DOM 结构来执行。
不依赖于服务器的响应,完全在用户的浏览器中进行。
攻击者可以通过操控 URL 的 hash 或 query 参数来注入脚本。
区别
| 特点 | 反射型 XSS | 存储型 XSS | DOM型 XSS |
|------------------|--------------------------------|--------------------------------|------------------------------|
| 执行时机 | 用户点击链接时 | 用户访问页面时 | 用户操作时 |
| 存储方式 | 不存储 | 存储在服务器上 | 不存储(客户端执行)|
| 影响范围 | 仅限于点击链接的用户 | 所有访问该页面的用户 | 仅限于受影响的用户 |
| 依赖交互 | 需要用户交互 | 不需要用户交互 | 需要用户交互 |
2.XSS 的fuzz字典链接
3.XSS挑战靶场打靶
1.反射型xss(get)
首先在对话框输入payload: <script>alert('xss')</script> ,发现对话限制长度,无法全部输入
f12打开工具台选择对话框,将原本20的长度改长即可输入完整内容
2.反射型xss(post)
这关我们输入第一天破解的管理员账户与密码即可
3.存储型XSS
再次在对话框输入payload
我们发现点击其他页面后,再切回存储型xss的页面后还是会弹出xss弹窗
4.DOM型xss
首先我们再次尝试输入之前的payload,发现无法成功攻击
再次使用f12打开工具台找到刚才输入的内容,发现原内容多出一个单引号,所以我们需要构造新的payload
再次在对话框输入新的payload: ' οnclick=alert('xss')> 后,点击“what do you see?”即可
5.DOM型XSS-X
这关同上关一样
6.xss之盲打
本关盲打指我们在前端并不能看到我们的代码,无法判断xss是否成功
在两个对话框都写入payload并提交后,根据提示登录进入后台即可看到xss攻击成功
4. 总结浏览器解析机制
1.文本解析:浏览器首先会解析HTML和XML文档结构,这一步是HTML解析器来完成的。解析器会根据文档类型定义(DTD)或HTML5的规范来构建DOM(文档对象模型)树。
2.DOM构建:在HTML解析的同时,浏览器会开始构建DOM树。DOM树是一个结构化的文档表示,用以展示HTML文档的结构。
3.CSS解析:浏览器接着会解析页面中的CSS样式代码。这一步是为了理解页面元素应该如何布局和显示。
4.渲染树构建:在DOM和CSS规则都解析完成之后,浏览器会产生一个渲染树(Rendering Tree)。渲染树包含用于显示的可见元素,与DOM树的元素相对应,但不包括Display: none的元素和表单的隐藏字段。
5.布局计算:浏览器将为渲染树中的每个元素计算确切的位置和大小,这一步称为布局(Layout)。
6.绘制:浏览器按照布局结果对渲染树中的元素进行绘制,完成整个页面的渲染。
7.事件处理:用户与页面交互时,浏览器会触发事件,例如点击、滚动或输入等,然后通过JavaScript执行相应的处理函数。