sqlmap 德语版 README 导读:从安装到 SQL 注入自动化检测的完整上手指南
【免费下载链接】sqlmapAutomatic SQL injection and database takeover tool项目地址: https://gitcode.com/gh_mirrors/sq/sqlmap
sqlmap 是一个开源的渗透测试工具,用于自动化检测、利用 SQL 注入漏洞并接管数据库服务器。本文以仓库中的德语版项目文档 doc/translations/README-de-DE.md 为骨架,结合当前仓库的入口、参数解析与控制器源码,系统讲解 sqlmap 的核心能力、安装方式与基本用法。读完本文,你将掌握如何获取并运行 sqlmap、区分基础与完整帮助信息,以及从命令行入口到注入检测的底层调用链。
一、项目定位:自动化 SQL 注入与数据库接管
德语版 README 对 sqlmap 的定位非常明确:它是一个开源的渗透测试工具(Penetrationstest Werkzeug),将 SQL 注入漏洞的发现(Entdeckung)、利用(Ausnutzung)与数据库服务器接管(Übernahme)过程自动化。它内置一套强大的检测引擎(mächtige Erkennungs-Engine),并为进阶渗透测试人员提供了许多细分功能(Nischenfunktionen)。
原文列出的核心功能范围(doc/translations/README-de-DE.md 第 5 行)包括四层能力,在仓库中均有对应的实现模块:
| 能力层级 | 原文描述 | 仓库对应实现 |
|---|---|---|
| 数据库指纹识别 | Datenbankerkennung(数据库识别) | plugins/dbms/ 下 30 余个数据库插件(MySQL、Oracle、PostgreSQL、MSSQL、SQLite、ClickHouse 等),每个插件包含 connector、fingerprint、enumeration 等模块 |
| 数据提取 | abrufen von Daten aus der Datenbank(从数据库提取数据) | lib/controller/ 的枚举与提取逻辑,配合 lib/core/dump.py 完成结果转储 |
| 文件系统访问 | zugreifen auf das unterliegende Dateisystem(访问底层文件系统) | plugins/generic/filesystem.py 及各 DBMS 插件的 filesystem 模块(如 plugins/dbms/mysql/filesystem.py) |
| 操作系统命令执行 | Befehlsausführung auf dem Betriebssystem(操作系统命令执行) | 通过 out-of-band(带外)连接实现,对应 lib/request/dns.py(DNS 带外通道)与 lib/takeover/(数据库接管、xp_cmdshell / UDF 上传等) |
值得注意:原文明确强调命令执行是通过 out-of-band 连接实现的——当应用无法直接回显查询结果时,sqlmap 借助 DNS 等带外通道把数据带出来,这是它区别于普通注入工具的关键设计之一,也是 lib/request/dns.py 与 data/procs/ 下各数据库dns_request.sql模板存在的意义。
二、获取与安装
2.1 两种官方分发方式
原文(第 14~23 行)给出了两种获取途径,均以官方发布渠道为准:
- 打包下载:直接下载最新的 TAR 归档或 ZIP 归档压缩包,解压后即可使用;
- Git 克隆(推荐):克隆仓库以获得最新开发版本,原文给出的命令为:
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev--depth 1表示浅克隆,只拉取最近一次提交历史,可以显著减少下载体积,适合日常使用场景。
2.2 Python 运行时要求
德语版文档声明 sqlmap 支持 Python2.6、2.7 与 3.x,在各平台开箱即用。需要说明的是,这是历史版本的描述——当前仓库主 README.md 已将要求更新为2.7 与 3.x;同时入口脚本 sqlmap.py 第 48 行仍保留了针对 Python 2 运行时的告警过滤逻辑("Python 2 is no longer supported"),说明 Python 2 仅处于兼容保留状态,实际使用请优先选择 Python 3。
安装后无需额外编译或配置:仓库根目录下的 sqlmap.py 就是 CLI 入口,直接以python sqlmap.py运行即可。仓库还附带默认配置文件 sqlmap.conf,支持以-c参数加载,方便把常用选项固化下来。
三、基本用法:-h 与 -hh 的区别
原文的 Benutzung(使用)一节给出了两个核心命令(第 28~34 行):
# 列出所有基础选项与开关 python sqlmap.py -h # 列出全部选项与开关(含高级功能) python sqlmap.py -hh这两个命令看似只有一字之差,实则对应两级帮助信息。从源码看,lib/parse/cmdline.py 的cmdLineParser()(第 97 行)对二者做了专门处理:
-h/--help:显示基础帮助,源码第 1013~1021 行将帮助文案改写为 "basic help";-hh:原文档提示它展示"全部"选项与开关。源码第 1002~1011 行通过一个 hack 把长选项--hh绑定到短选项-hh,并在第 1106~1107 行将-hh归一化为-h后再交给 argparse 解析,同时第 995~997 行对过长的选项名做了截断美化(MAX_HELP_OPTION_LENGTH)。
此外,命令行解析器还做了不少防呆处理,例如把来自网页的 Unicode 连字符、全角逗号等非法字符自动归一化或直接拦截(第 1101~1118 行),避免从文档复制命令时踩坑。
3.1 一个最小可运行的示例
以帮助信息为起点,最简单的真实扫描是直接给出带注入点的 URL(cmdLineParser还会自动把第一个裸 URL 参数包装成--url=...,见第 1108~1109 行):
python sqlmap.py -u "http://example.com/vuln.php?id=1"在交互提示下确认参数、接受风险提示后,sqlmap 会依次完成连通性检查、数据库指纹识别与注入点判定;如果只想跑通流程而不想交互,可追加--batch(checkPipedInput也会在管道输入时自动开启批处理模式,见 sqlmap.py 第 178~179 行)。
四、源码级验证:一次扫描的调用链
为印证 README 对"自动化检测与接管"的描述,可以从当前仓库的入口脚本出发,梳理一次扫描的底层调用链:
- 入口初始化:sqlmap.py 的
main()(第 161 行)首先执行环境检查、路径初始化与 banner 打印,随后调用cmdLineParser()(第 174 行)解析全部命令行参数; - 配置初始化:解析结果写入
cmdLineOptions并调用initOptions()(第 176 行)合并默认值与配置文件; - 进入控制器:最终调用 lib/controller/controller.py 的
start()(第 344 行)。该函数的 docstring 明确指出它会"检查 URL 稳定性,以及所有 GET、POST、Cookie 和 User-Agent 参数是否为动态且受 SQL 注入影响"——这正是 README 所述"检测引擎"的核心工作; - 注入判定:
start()内部对每个目标与参数调用 lib/controller/checks.py 中的checkSqlInjection()(第 756 行),后者根据布尔盲注、时间盲注、报错注入、联合查询等不同技术(对应 data/xml/payloads/ 下的boolean_blind.xml、time_blind.xml、error_based.xml、union_query.xml等载荷定义)完成注入验证; - 功能扩展:扫描开始前
start()还会依次处理哈希破解(crackHashFile)、直接连接模式(conf.direct)、爬虫目标(conf.crawlDepth)等可选入口(第 351~360 行)。
值得一提的是,除了命令行方式,仓库还提供库调用接口:lib/utils/library.py 暴露了scan()与scanFromRequest()(__all__定义于第 19 行),允许在 Python 程序中直接调用,例如:
import sqlmap result = sqlmap.scan("http://target/vuln.php?id=1", dumpTable=True, tbl="users")这与 sqlmapapi.py 提供的 REST API(接口定义见 sqlmapapi.yaml)共同构成了 README 之外的程序化使用路径,适合自动化平台集成。
五、更多学习资源(仓库内导航)
原文末尾的 Links 一节罗列了官网、下载、问题跟踪、用户手册、FAQ、演示等外部渠道。受篇幅与可验证性限制,这里将其中的核心内容映射为仓库内可直接查阅的资料:
- 架构设计:doc/ARCHITECTURE.md 详细说明 lib、plugins、thirdparty 等目录的分层设计;
- 变更历史:doc/CHANGELOG.md 记录各版本功能演进,可交叉印证 README 中"强大检测引擎"等表述的落地过程;
- 多语言 README 索引:主 README.md 末尾的 Translations 一节列出了包括德语版 README-de-DE.md 在内的二十余种语言版本;
- 配置文件说明:sqlmap.conf 是
-c参数对应的完整配置模板,注释中包含大量选项取值说明; - 自动化测试:tests/ 下的测试用例(如
test_checks.py、test_techniques.py、test_tamper.py)验证了注入检测、技术选型与绕过脚本等核心行为; - 扩展生态:tamper/ 提供百余个 WAF 绕过脚本,extra/ 内含边界检查、字典生成等辅助工具,可作为深入学习的第二课堂。
对于多语言用户,德语版文档同时提及可以到 doc/translations/ 目录查看中文(README-zh-CN.md)、法文、日文等本地化说明,选择最顺手的语言开始实践。
结语
德语版 README 虽然篇幅精炼,却完整勾勒出 sqlmap 的能力全景:从自动化 SQL 注入检测、数据库指纹识别,到数据提取、文件系统访问乃至基于带外通道的操作系统命令执行。结合仓库源码可以看到,这一能力栈由 lib/parse/cmdline.py 的参数解析、lib/controller/ 的检测与利用引擎、plugins/dbms/ 的数据库方言适配共同支撑。对初学者而言,python sqlmap.py -h是认识工具的第一步,git clone是获得最新能力的推荐路径;对进阶使用者,doc/ARCHITECTURE.md 与 tests/ 则提供了通往原理层的钥匙。请始终在获得授权的目标上使用该工具,并遵守本地法律与测试边界。
【免费下载链接】sqlmapAutomatic SQL injection and database takeover tool项目地址: https://gitcode.com/gh_mirrors/sq/sqlmap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考