当应用允许用户可控数据改变 Shell 命令或数据库查询的含义时,就会产生注入漏洞。本课程通过针对本地故意脆弱应用的命令注入和 SQL 注入练习,让这种边界失效变得清晰可见。
你会先手工构造载荷,观察分隔符、引号、注释、布尔表达式和 UNION SELECT 为何会改变程序行为;随后使用 sqlmap 自动完成检测、模式枚举、数据提取和 OS shell 流程,最后独立完成数据库攻陷挑战。
你将学到什么
- 识别命令注入点,并用 Linux 命令分隔符确认命令执行。
- 使用 Shell 转义和通配符绕过简单关键词过滤,并在目标上创建证明文件。
- 触发 SQL 错误,并构造布尔载荷绕过有漏洞的登录。
- 使用
ORDER BY和UNION SELECT确定查询列数及回显位置。 - 查询 SQLite 模式元数据,并通过应用响应提取预置用户名和密码。
- 使用 sqlmap 检测 SQLi、枚举数据库、导出指定表,并尝试交互式 OS shell。
- 在最终挑战中独立验证两个 SQLi 入口并导出预置客户表。
本课程适合谁
这是一门中级课程,适合希望在依赖自动化之前理解注入机制的 Web 安全学习者,也适合准渗透测试人员、应用安全学习者,以及需要通过具体示例理解不安全命令构造和动态 SQL 如何导致系统与数据暴露的开发人员。
前置要求: 熟悉 Linux 终端和 curl、基本 HTTP GET/POST 请求与 URL 编码,以及 SELECT、WHERE、列和表等入门 SQL 概念。
学习环境: Ubuntu 22.04 终端,提供 sqlmap 和运行在本地 5000、8080 与 80 端口的隔离故意脆弱 Web 应用。所有命令和提取的示例数据均限于课程环境。
常见问题
开始前需要掌握高级 SQL 吗?
不需要。实验会解释查询上下文、布尔逻辑、注释、列数判断和 UNION SELECT 操作顺序。熟悉基础 SQL 术语会让中级练习更容易理解。
注入载荷会发送到真实系统吗?
不会。所有目标都是专为练习而配置的本地应用,命令、凭据、客户记录和令牌均为实验预置数据。
为什么先教手工 SQL 注入,再使用 sqlmap?
手工练习能展示输入如何改变查询语法,以及回显列如何泄露数据。这有助于你理解 sqlmap 的检测技术并限定自动枚举范围,而不是把输出当作黑盒。
课程会获得操作系统命令执行能力吗?
会,但仅限隔离实验。命令注入练习会直接运行指定 Linux 命令;sqlmap 实验则针对预置 PHP 目标引导你使用 --os-shell 流程。这些操作不会超出本地环境。





