空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB Academy:命令注入(Command Injections)

写作时间:2026-10-05 19:54:46
# HTB Academy
# 网安

来源:Hack The Box Academy,Module 109。本文按“输入如何进入命令—如何验证—如何识别过滤—如何修复”的主线归纳 12 个小节,不照搬网页逐句内容。命令示例仅用于 HTB 或明确授权的测试环境。

0. 本章知识地图

识别用户输入是否流入系统命令
  → 建立正常请求/响应基线
  → 用低影响命令验证命令边界是否可控
  → 区分前端校验、后端黑名单与 WAF
  → 按 shell 语义理解运算符和输出
  → 在靶场中学习空格、字符、命令过滤的局限
  → 理解手工/自动混淆及环境条件
  → 修复:优先不用系统命令,后端验证与清理,最小权限

小节目录

  1. Intro to Command Injections:命令注入简介
  2. Detection:检测
  3. Injecting Commands:注入命令
  4. Other Injection Operators:其他注入运算符
  5. Identifying Filters:识别过滤器
  6. Bypassing Space Filters:绕过空格过滤
  7. Bypassing Other Blacklisted Characters:绕过其他黑名单字符
  8. Bypassing Blacklisted Commands:绕过黑名单命令
  9. Advanced Command Obfuscation:高级命令混淆
  10. Evasion Tools:混淆工具
  11. Command Injection Prevention:命令注入预防
  12. Skills Assessment:技能评估

1. 核心概念:问题发生在哪条数据流

命令注入的根因不是“输入里出现某个危险字符”,而是不可信输入影响了后端要执行的系统命令。应用本来想把输入当普通参数;若输入还能改变 shell 对命令边界或语法的解释,便可能让额外命令运行。

用户输入 → 前端校验(可能可绕过)→ HTTP 请求 → 后端校验/过滤
        → 拼接或传给系统命令函数 → Shell 解析 → 子命令及输出

问题常见于 Web 应用,但不限于 Web:二进制程序或厚客户端把未经安全处理的输入传给命令执行函数,也可能有同类缺陷。实际影响取决于服务进程权限、可访问数据和网络位置。

1.1 章节涉及的代码执行入口

平台/语言 课程提到的入口 风险点 PHP exec、system、shell_exec、passthru、popen 请求参数被直接拼进命令字符串 NodeJS child_process.exec、child_process.spawn 用户值改变命令或参数的含义

PHP 易受影响的示意:

if (isset($_GET['filename'])) {
    system("touch /tmp/" . $_GET['filename'] . ".pdf");
}

NodeJS 易受影响的示意:

app.get("/createfile", function(req, res) {
    child_process.exec("touch /tmp/" + req.query.filename + ".txt");
});

共同点是文件名来自请求,却未经服务器端验证和安全处理就进入命令文本。开发者只想创建文件,不代表用户输入只能影响文件名。

1.2 与其他注入的关系

注入的共同模式是:用户输入被错误地解释为查询或可执行语法的一部分。本章仅重点讨论操作系统命令注入;课程还简要列举 SQL、代码、HTML/XSS、LDAP、NoSQL、XPath、HTTP Header 等注入类型。

2. 前置条件、靶场与工具

2.1 实验环境

  • 在 HTB 本章练习或明确授权的目标上测试;不要把示例请求发往无授权的真实系统。
  • Host Checker 是课程演示用的练习 Web 应用;先启动对应目标,取得靶场 IP,再访问练习页面。
  • Pwnbox 是 HTB 提供的网页 Parrot Linux 环境,也可使用自己的实验环境。课程提示:更换 Pwnbox 区域会终止已生成的 Pwnbox。
  • 基础验证只需浏览器和页面输入框;修改请求时可使用 Burp Suite,或按课程说明配置 Firefox 代理。
  • Linux Bash、Windows CMD 与 PowerShell 的解释规则不同,不能混用语法。

2.2 本章涉及的工具

工具 用途 课程中的前置要求/配置 Firefox Developer Tools 在 Network 面板确认按钮是否发出了 HTTP 请求 Firefox 中打开开发者工具;课程快捷键 Ctrl+Shift+E Burp Suite 拦截请求、送入 Repeater、改参数后重发 浏览器流量经过 Burp 代理;先产生一条正常请求 Bashfuscator 生成 Linux Bash 命令混淆形式 Git、Python 3、pip3;课程安装 setuptools==65 Invoke-DOSfuscation 交互式生成 Windows CMD/PowerShell 混淆形式 Git、PowerShell;或按课程提示在 Pwnbox 使用 pwsh

3. 建立基线并检测命令注入

检测从正常功能开始,而不是一上来堆复杂载荷。

  1. 输入课程要求的正常 IP(如 127.0.0.1),确认应用功能及正常响应。
  2. 若页面显示 ping 输出,可推测后端命令可能类似:
ping -c 1 OUR_INPUT
  1. 在靶场中使用课程展示的命令连接符追加低影响识别命令,例如 whoami。
  2. 对比基线与测试响应:只有原功能输出,不足以证明注入;出现第二条命令输出,是直接证据之一。
  3. 面对较复杂过滤时,从小步测试或代码审查确认数据流,再逐步调整。每次只改变一个因素,便于定位原因。

示意输入与拼接结果:

输入:127.0.0.1; whoami
可能拼成:ping -c 1 127.0.0.1; whoami

​

HTB Host Checker 的正常输入与 ping 基线输出

​

其目的仅是在靶场确认是否有第二条命令被执行;“输入框接受了字符”不等于“后端执行成功”。

3.1 前端校验与后端处理要分开

课程演示中,输入框拒绝带分号的内容,但 Firefox Network 面板没有新请求。这说明本次测试停在前端,不能据此证明后端安全。

  • 在 Network 面板观察点击后是否发出请求(课程示例快捷键 Ctrl+Shift+E)。
  • 请求没有发出:本次由前端阻止;不能推断服务器端如何处理。
  • 请求已发送:检查请求参数与响应,判断是后端应用拒绝、WAF 拦截,还是命令执行结果。
  • 前端校验改善交互,但服务器必须独立执行校验与清理。

课程截图显示输入框因格式校验拒绝 ​127.0.0.1; whoami​,同时 Network 面板没有新请求;这只能说明该次输入被前端挡住,不能证明后端安全。

​

Host Checker 前端格式校验拒绝注入字符串

​

​

Firefox Network 面板中没有发出请求

​

4. 使用 Burp Suite 验证请求端行为

当页面只接受特定格式、阻止测试字符时,课程演示用代理重放自定义请求:

  1. 配置 Firefox 经 Burp 代理访问靶场。
  2. 打开拦截功能,在页面发出正常请求(如输入合法 IP)。
  3. 将拦截到的请求发送到 Repeater(课程使用 Ctrl+R)。
  4. 在 Repeater 中改请求参数,而非只改页面输入框。
  5. 对特殊字符做 URL 编码(课程使用 Ctrl+U),再发送。
  6. 对照原始请求与响应:参数是否抵达后端、响应是否仍有 ping 输出、是否出现追加命令输出或拒绝提示。

观察 可以得出的结论 不能直接得出的结论 页面报错,Network 无请求 本次被前端挡住 后端一定安全 请求发出,响应称输入无效 应用或 WAF 可能拒绝 仅凭错误文字无法确定拦截组件 响应有原命令和附加命令的输出 当前靶场/输入条件下有注入证据 不代表任意命令都可执行或权限相同 只看到原命令输出 附加部分可能没执行、被过滤或无可见输出 单次阴性结果不能证明不存在漏洞

​

Burp Repeater 中修改后的请求与响应:请求参数含分号和 whoami,但响应只显示 ping 输出

​

这张图对应表中的“只看到原命令输出”:即使自定义请求已到达应用,也要以响应证据判断,不能把尝试过的载荷当成执行成功。

5. 命令分隔符与条件运算符

保留应用预期参数(如 IP),再添加运算符和测试命令。最终行为受 OS、shell、输入位置与过滤方式影响。

运算符 常见 URL 编码 执行关系 观察点 分号 ; %3b 前一条后继续执行下一条 通常可能看到两条命令输出 换行 %0a 常可开始下一条命令 课程用它绕过部分运算符黑名单 & %26 后台执行命令 输出顺序/可见性可能不同 管道 %7c 前一条输出交给后一条 页面可能只显示后一个命令结果 && %26%26 前一条成功时才执行后一条 ping 成功时追加命令会运行 || %7c%7c 前一条失败时才执行后一条 合法 IP 使 ping 成功时,后项通常不执行 反引号命令替换 %60%60 命令替换 课程表中标为 Linux 场景 $(...) %24%28%29 子 Shell/命令替换 课程表中标为 Linux 场景

测试 && 的成功条件:

ping -c 1 127.0.0.1 && whoami

让前一条命令失败,观察 ||:

ping -c 1 || whoami

跨平台注意:课程指出,分号在 Windows CMD 中可能不作为命令分隔符,但在 PowerShell 中仍可用。不要把 Bash 语法直接套到 Windows;先识别环境。

​

Burp 请求中使用 URL 编码的 && 运算符;图中响应仍只有 ping 输出

​

6. 识别过滤器,而不是盲目换载荷

课程区分应用侧字符/命令黑名单与 WAF 等安全层。黑名单可能检查分号、&、| 等字符,也可能检查 whoami 等命令词。固定字符串规则未必等同于 shell 的真实语法边界。

靶场排查顺序:

  1. 确认合法基线有效。
  2. 一次测试一个运算符;若无效,再换一个。
  3. 运算符有效后,单独测试空格。
  4. 再单独测试一个识别命令。
  5. 记录请求、响应与变化,区分字符、空格、命令词被拦,还是命令执行但输出不可见。

拒绝页面若由正常应用内容呈现,可能是应用内过滤;若跳到另一种页面并显示请求/IP 等信息,可能是 WAF 响应。它们只是线索,应结合 HTTP 请求和响应判断。

课程用于说明不足之处的 PHP 黑名单逻辑:

$blacklist = ['&', '|', ';'];
foreach ($blacklist as $character) {
    if (strpos($_POST['ip'], $character) !== false) {
        echo "Invalid input";
    }
}

它只查找固定字符,容易漏掉等价语法或不同编码,不应作为主要安全边界。

​

Burp 请求中的分号载荷被 Host Checker 拒绝并返回 Invalid input

​

7. 绕过空格过滤:理解参数分隔

本节是在课程靶场中说明:过滤某个字节,并不等于消除了它表达的语法功能。分隔命令与分隔参数是两个不同问题。

写法 课程中的用途/环境 URL 编码 Tab:%09 用制表符代替普通空格;课程指出 Linux 和 Windows 的相应命令场景都可尝试 $IFS Linux 环境变量默认包含空格/制表符,可用于参数分隔 Bash 花括号展开:{ls,-la} Bash 可展开参数,不直接键入普通空格

课程先观察到换行 %0a 可作为追加命令的分隔符,再发现普通空格仍被拒绝。因此要分别测试命令分隔符和参数分隔符。

Bash 本地示意:

{ls,-la}

验证方法:先在课程给出的本地 shell 环境确认语法,再放入 HTB 请求;若被拒绝,回到单变量排查,确认运算符、编码或命令词过滤。

​

Burp 请求以 ${IFS} 代替普通空格;响应仍需按输出证据判断

​

8. 绕过其他黑名单字符:从环境变量取字符

课程演示从环境变量按位置提取斜杠、分号等字符。结果取决于变量实际内容,不能假定不同机器完全相同。

8.1 Linux 环境变量切片

课程以 PATH 开头的字符取得斜杠:

echo ${PATH}
echo ${PATH:0:1}

若当前环境的 PATH 以 / 开头,切片就会输出该字符。课程还演示从 LS_COLORS 切片取分号:

echo ${LS_COLORS:10:1}

用 printenv 查看可用变量,找到包含目标字符的变量,再选择起点和长度。示例中的 echo 只是观察输出;拼入表达式时使用表达式本身。

靶场组合示意:

127. 0.0.1${LS_COLORS:10:1}${IFS}

8.2 Windows 环境变量切片

课程以 HOMEPATH 为例,从字符串中截取反斜杠:

echo %HOMEPATH:~6,-11%

PowerShell 可按索引读取环境变量字符:

$env:HOMEPATH[0]
$env:PROGRAMFILES[10]
Get-ChildItem Env:

Get-ChildItem Env: 可查看变量,再判断是否含有合适字符。索引结果依赖变量内容,须在实际练习环境验证。

8.3 字符移位

课程还介绍按 ASCII 相邻字符移位生成目标字符:先查 ASCII 表,选择目标字符前一个字符,再用字符转换命令移动一位。Linux 示意:

man ascii
echo $(tr '!-}' '"-~'<<<[)

这依赖环境和 shell;先本地确认输出,再判断靶场过滤规则是否允许。

9. 绕过命令黑名单与高级命令混淆

若字符过滤绕过后,加入命令仍被拒绝,可能存在命令词黑名单。课程说明,这类规则可能查找精确命令名;后续技巧改变命令的呈现形式,但不改变最终意图。

​

课程 Burp 示例:经过混淆的 whoami 尝试未在响应中产生对应命令输出

​

该截图用于强调“请求已发送”不等于“命令执行成功”;应根据响应内容判断,而不是只看载荷形式。

9.1 插入 Shell 可忽略字符

课程演示在命令字符之间插入引号:

w'h'o'am'i
w"h"o"am"i

课程要求不要混用引号类型,并保持成对。Linux 示例还包括位置参数 $@ 与反斜杠:

who$@ami
w\ho\am\i

Windows 示例使用插入符:

who^ami

这些写法依赖各自 shell 的解释方式;对某个 shell 有效,不代表另一个 shell 同样有效。

9.2 大小写操纵

  • Windows PowerShell/CMD 通常不区分命令大小写,课程以 WhOaMi 演示。
  • Linux 命令名区分大小写,单纯改变大小写不能直接运行普通命令。
  • 课程用 tr 把混合大小写转成小写后再执行:
$(tr "[A-Z]" "[a-z]"<<<"WhOaMi")

如果命令含普通空格,而练习过滤器会拒绝它,可按课程先验证 Tab(%09)替代,并确认没有重新引入其他被过滤字符。另一课程示例:

$(a="WhOaMi";printf %s "${a,,}")

9.3 反转命令

先生成反向字符串,再在子 Shell 中反向还原并执行。Linux 课程示例:

echo 'whoami' | rev
$(rev<<<'imaohw')

PowerShell 课程示例:

"whoami"[-1..-20] -join ''
iex "$('imaohw'[-1..-20] -join '')"

若原命令中有被过滤字符,课程提醒还需考虑反向处理这些字符,或在构造时将其纳入变换。

9.4 Base64 编码命令

编码可避免原始输入直接出现某些被过滤字符,或降低 URL 解码对原字符串的影响。但编码不是安全边界;关键仍是后端是否把解码结果交给 shell 执行。

Linux 课程流程:先编码待执行文本,再于子 Shell 解码并交给 Bash;用课程示例核对输出,并留意命令中的空格也需符合练习过滤规则。

echo -n 'cat /etc/passwd | grep 33' | base64
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)

课程使用 here-string(<<<)避免在解码命令本身再次出现被过滤的管道字符。若 bash 或 base64 也被过滤,课程提示可尝试前面介绍的命令混淆或其他解码/执行命令;是否可用取决于环境。

Windows PowerShell 课程流程:把字符串转为 Unicode 字节再 Base64 编码,之后还原并交给子 Shell:

[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('whoami'))
iex "$([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String('dwBoAG8AYQBtAGkA')))"

课程还展示在 Linux 上先把 UTF-8 转成 UTF-16LE,再编码,以匹配 PowerShell 的 Unicode 编码:

echo -n whoami | iconv -f utf-8 -t utf-16le | base64

课程还提到通配符、正则、输出重定向、整数展开等类别;是否适用取决于目标 shell 和过滤行为。

10. 自动化混淆工具:安装、使用与边界

工具只生成候选输入,不会替你确认目标 shell 是否兼容,也不保证绕过过滤器。先本地验证生成结果,再在授权练习中测试,并控制输出长度。

10.1 Linux:Bashfuscator

用途:生成 Bash 命令的混淆形式。
课程前置条件:Git、Python 3、pip3;课程安装 setuptools 65 版。

git clone https://github.com/Bashfuscator/Bashfuscator
cd Bashfuscator
pip3 install setuptools==65
python3 setup.py install --user

进入可执行目录并查看帮助:

cd ./bashfuscator/bin/
./bashfuscator -h

最简用法:

./bashfuscator -c 'cat /etc/passwd'

课程提醒:默认随机选择混淆路径,输出可能从数百字符到超过百万字符。若需更短、更简单的候选结果,可按课程示例限制参数:

./bashfuscator -c 'cat /etc/passwd' -s 1 -t 1 --no-mangling --layers 1

先验证再提交:把完整结果放入本地 Bash 子进程测试,确认输出符合预期;然后才在 HTB Web 应用中测试。若失败,先检查 payload 是否过长、仍含过滤字符、目标是否使用 Bash,以及应用/WAF 是否拒绝请求。

bash -c 'eval "$(把工具输出放在这里)"'

工具输出是候选文本,不等于“已绕过”。

10.2 Windows:Invoke-DOSfuscation

用途:交互式生成 CMD/PowerShell 命令混淆形式。
课程前置条件:Git 与 PowerShell;确认目标命令解释器与工具输出模式一致。

git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation
help

工具提供 BINARY、ENCODING、PAYLOAD 等交互选项。课程用读取本地练习文件演示:

SET COMMAND type C:\Users\htb-student\Desktop\flag.txt
encoding
1

将输出的混淆命令放到匹配的 CMD 环境验证,并确认结果仍是预期文件内容。课程提示:没有 Windows VM 时,可在 HTB Pwnbox 中安装/使用 pwsh 后按同样流程操作;PowerShell 安装说明见课程中的 Microsoft 链接。

10.3 工具选择与排错

场景 选择 先检查 Linux/Bash 目标 Bashfuscator 或手工 Bash 验证 命令长度、空格/Tab、目标是否为 Bash Windows CMD/PowerShell 目标 Invoke-DOSfuscation 当前解释器及输出语法 过滤规则简单 先用课程中的手工方法 是字符黑名单还是命令黑名单 自动结果很长或失败 调整参数并回到单变量测试 不要盲目反复发送整段长载荷

11. 防御:从根因处切断命令解释

11.1 优先不用系统命令

最可靠的方向是使用语言或框架的内置功能,而非把用户输入拼进系统命令。课程以 PHP 检查主机可达性为例,指出可考虑 fsockopen,而不是执行系统命令。确实没有合适内置 API 时,才有限度地使用系统命令。

11.2 输入验证:前端与后端都做

验证用于判断数据是否符合业务格式;不符合就拒绝。前端校验改善用户体验,但可被绕过,后端必须重新验证。

PHP 标准 IP 格式验证示意:

if (filter_var($_GET['ip'], FILTER_VALIDATE_IP)) {
    // 调用业务逻辑
} else {
    // 拒绝请求
}

课程以 JavaScript 正则举例验证 IPv4:

if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ip)) {
    // 调用业务逻辑
} else {
    // 拒绝请求
}

课程还链接 PHP filter_var、NodeJS is-ip 包,以及 .NET、Java 的输入验证文档。使用库前要确认其校验格式符合业务预期。

11.3 输入清理:验证后再处理

清理用于去掉当前格式不需要的特殊字符。课程强调清理应在验证之后进行;不要只用黑名单几个已知坏词代替清理。

若业务字段是 IP,课程示意只保留字母数字与点号:

$ip = preg_replace('/[^A-Za-z0-9.]/', '', $_GET['ip']);

JavaScript 对应示意:

var ip = ip.replace(/[^A-Za-z0-9.]/g, '');

课程还列出 NodeJS 后端的 DOMPurify:

import DOMPurify from 'dompurify';
var ip = DOMPurify.sanitize(ip);

若业务确实要接受特殊字符,课程提到 PHP escapeshellcmd、NodeJS escape(ip) 等转义方式作为额外措施;但同时指出单靠转义通常不够可靠,可能被绕过。优先避免启动 shell、严格验证并避免命令字符串拼接。

11.4 服务器配置:降低失陷后的影响

课程列出的纵深防御措施:

  • 使用 Web 服务器内置 WAF(如 Apache mod_security),必要时配合外部 WAF。
  • 按最小权限原则运行 Web 服务,例如低权限 www-data 用户。
  • 在 PHP 中禁用不需要的危险函数(课程例子:disable_functions=system,...)。
  • 限制 Web 应用可访问的目录范围(PHP 示例:open_basedir = '/var/www/html')。
  • 拒绝双重编码请求及 URL 中的非 ASCII 字符。
  • 避免使用敏感或过时的库/模块。

WAF、函数禁用和目录限制用于纵深防御或降低影响,不能代替安全代码设计、后端验证与授权测试。

12. Skills Assessment:练习目标与复盘框架

本章最后的评估场景是受委托的渗透测试:发现一个文件管理 Web 应用,考虑到此类功能可能执行系统命令,需要使用本章方法判断是否有命令注入,并在靶场过滤条件下验证。

该小节给出的是目标与任务,没有直接提供完整解题过程。因此以下是复盘框架,不伪造评估答案:

  1. 启动目标并记录靶场地址;保留正常请求和响应作为基线。
  2. 梳理文件管理功能中由用户控制的输入点。
  3. 检查请求是否发出;必要时用 Burp Repeater 区分前端校验与服务器端行为。
  4. 从单变量测试开始,记录可用运算符、字符/空格过滤和命令过滤。
  5. 根据已确认的 shell 与过滤行为选择课程中的对应方法;每次只变更一个因素。
  6. 用响应输出证明命令是否执行;不要仅凭错误文本、输入框状态或单次失败下结论。
  7. 限定在题目范围内,并遵守最小影响原则。
  8. 复盘修复建议:优先移除系统命令调用;无法移除时,后端严格验证、清理并降低服务账户权限。

13. 常见误区与排错

现象 优先检查 避免的误判 点击后没有 HTTP 请求 前端校验、Network 面板 “后端拒绝”或“后端安全” 请求后提示 Invalid input 哪个字符/词触发规则;应用还是 WAF 响应 不要一次更换整个载荷 有 ping 输出但无附加输出 运算符条件、命令词过滤、输出可见性 原命令成功不等于注入成功 && 后面的命令没执行 前一命令是否成功 && 只在前项成功时执行后项 || 后面的命令没执行 前一命令是否失败 前项成功时后项通常不会运行 Bash 写法在 Windows 不工作 CMD 与 PowerShell 差异 不要混用不同 shell 语法 空格被过滤 单独验证 Tab、$IFS、花括号展开 不要假定 URL 编码一定被接受 Bashfuscator 输出巨大 默认随机混淆及参数 工具生成不代表适合提交 编码 payload 到服务端后损坏 URL 解码、字符集、shell 与解码过程 Base64 不会自动保证可执行 手工混淆仍被拒绝 是否仍含过滤字符/空格 不要把过滤器拒绝误判为语法错误

14. 速查:判断流程与结论

正常输入 → 功能正常吗?
  ├─ 否:先解决靶场/请求基线问题
  └─ 是:是否发出 HTTP 请求?
       ├─ 否:前端校验阻断;用 Network 证据确认
       └─ 是:分析应用规则 / WAF / 命令输出
            → 运算符逐个测试
            → 空格、命令词逐项测试
            → 仅在授权靶场按 shell 行为选方法
            → 用响应证据复核,不凭猜测下结论

关键记忆点

  1. 输入进入系统命令才是根因;危险字符只是可能的表现。
  2. 前端校验不能代替服务器端校验。
  3. 分号、&&、|| 的执行条件不同,输出也可能不同。
  4. 逐项识别字符、空格和命令过滤,再选择课程方法。
  5. 所有混淆都依赖目标 shell;Linux Bash、Windows CMD、PowerShell 不可混为一谈。
  6. 自动工具生成的是候选文本,需要本地与靶场验证。
  7. 最佳修复不是无限扩充黑名单,而是避免 shell、严格后端验证并降低权限。

15. 课程内复习入口

  • HTB Academy:命令注入模块
  • OWASP Top 10(课程引用)
  • Bashfuscator 仓库
  • Invoke-DOSfuscation 仓库
  • PayloadsAllTheThings:无空格命令注入思路(课程链接)
  • Microsoft:在 Linux 上安装 PowerShell(课程链接)
  • HTB Secure Coding 101: JavaScript(课程延伸)

HTB 原课与演示图回看

下面链接对应本章各节;Burp、Network 与 Host Checker 演示截图可在相关原课页面查看。

小节 HTB 页面 命令注入简介 section 1031 检测 section 1032 注入命令 section 1033 其他注入运算符 section 1034 识别过滤器 section 1035 绕过空格过滤 section 1036 绕过其他黑名单字符 section 1037 绕过黑名单命令 section 1038 高级命令混淆 section 1039 混淆工具 section 1040 命令注入预防 section 1041 技能评估 section 1042

图片复核:本章 12 个课程小节已逐节检查。保留了能对应基线、前端校验、Burp 请求/响应、过滤与空格绕过判断的代表性截图;正文使用 HTB CDN 的 HTTPS 图片直链。其余相似截图不重复堆入正文,命令与判读以文字归纳。

 

‍

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:Footprinting(足迹收集)

2026-09-20 12:23:20

Table of Contents