理论知识
01 前端基础知识
1.1 HTML基础
- 定义:HTML(超文本标记语言)用于描述网页结构。
- 标准结构:


内嵌脚本:
<script>JavaScript代码</script>

1.4 JavaScript弹窗函数
| 函数 | 描述 |
|---|---|
alert("文本") | 仅显示“确定”按钮的提示框 |
confirm("文本") | 带“确定”和“取消”的提示框 |
prompt("文本") | 可输入文本的对话框 |
1.5 JavaScript事件
- 事件三要素:
- 事件源(如
<a>、<div>标签) - 事件(如单击、双击)
- 事件处理程序(如
onclick触发的函数)
- 事件源(如
- 示例:
<img src="x" onerror="JS代码" /> <!-- 图片加载失败时执行JS -->
1.6 JavaScript伪协议
- 通过
javascript:协议直接在URL中执行JS代码:javascript:var now = new Date(); "<h1>The time is:</h1>" + now; - 利用示例:
<img src=javascript:alert("xss")>
02 XSS跨站脚本攻击
2.1 XSS定义
- 全称:Cross-Site Scripting(为避免与CSS混淆,缩写为XSS)。
- 原理:攻击者将恶意脚本注入到网页中,其他用户访问时触发执行。
2.2 XSS危害
| 类型 | 影响 |
|---|---|
| 劫持会话 | 窃取用户Cookie |
| 钓鱼攻击 | 伪造登录页面 |
| 篡改页面 | 插入恶意内容 |
| 传播蠕虫 | 自动扩散攻击 |
| 挖矿/广告 | 消耗用户资源 |
2.3 XSS类型
| 类型 | 特点 | 数据流向 |
|---|---|---|
| 反射型 | 恶意代码通过URL参数注入,用户点击触发 | URL → 浏览器 |
| 存储型 | 恶意代码存入数据库,用户访问页面时触发 | 数据库 → 页面 |
| DOM型 | 前端JS直接操作DOM导致漏洞 | URL → 浏览器(不经过服务器) |
03 XSS漏洞利用
3.1 BeEF框架
- 功能:通过XSS漏洞劫持浏览器,执行内嵌命令(如窃取Cookie、钓鱼)。
- 攻击流程:
- 在漏洞页面插入Payload(如
<script src="恶意JS"></script>)。 - 诱导管理员访问含Payload的页面。
- 通过BeEF控制台获取管理员Cookie并登录后台。
- 在漏洞页面插入Payload(如
04 XSS漏洞防御
4.1 XSS Filter
- 过滤用户输入中的敏感字符(如
< > ' " & # javascript)。
4.2 输入/输出过滤
- 输入验证:检查长度、格式(如邮箱、IP地址)、合法字符。
- 输出编码:将特殊字符转为HTML实体(如
<→<)。
4.3 CSP(内容安全策略)
- 作用:通过白名单限制可加载的资源(如脚本、图片)。
- 示例:
Content-Security-Policy: default-src 'self' *.trusted.com
05 XSS绕过技术
| 方法 | 示例 |
|---|---|
| 大小写绕过 | <ScRiPt>alert(1)</ScRiPt> |
| 黑名单绕过 | 使用<img src=x onerror=alert(1)> |
| 事件触发 | <button onclick=alert(1)>点击</button> |
| 编码绕过 | 使用十六进制/Unicode编码(如javascript: → \x6A\x61\x76\x61...) |
练习资源
- XSS挑战平台:
- http://xss-ctf.xiejiahe.com/
- http://test.ctf8.com/
相关操作
DOM型
| XSS(DOM) |
|
| xss_d/?default=English123 | ![]() |
| xss_d/?default=English 123<script>alert(1)</script> | ![]() |
| 网站源码 |
|
| view source | ![]() |
| xss_d/?default=English123"</option><script>alert(1)</script> | ![]() |
反射型
| 反射型 | ![]() |
| <script>alert(1)</script> |
|
| 查看源码 |
|
存储型
| 评论一直存在 | ![]() |
| 更改限制 <input name="txtName" type="text" size="30" maxlength="30"> | ![]() |
| <script>alert(2)</script> <script>alert(1)</script> |
|
| 每次访问这个页面都会重新加载代码并弹窗 |
|
| 当有人访问就会被攻击 使用Easy XSS保存常用语句 | ![]() |








































![[STM32问题解决(2)]STM32通过串口与PC通信,打开串口助手后无法在打开状态下下载程序和复位STM32](https://i-blog.csdnimg.cn/direct/b70a040cf1974bdfb3cb62e000e3b6f3.png)