ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

sqlmap 使用指南:自动化 SQL 注入检测与数据库服务器接管的实战方案

sqlmap 使用指南:自动化 SQL 注入检测与数据库服务器接管的实战方案 sqlmap 使用指南自动化 SQL 注入检测与数据库服务器接管的实战方案【免费下载链接】sqlmapAutomatic SQL injection and database takeover tool项目地址: https://gitcode.com/gh_mirrors/sq/sqlmapsqlmap 是一款开源渗透测试工具用于自动化检测和利用 SQL 注入漏洞并进一步接管目标数据库服务器。本文以官方俄语 READMEdoc/translations/README-ru-RU.md为骨架结合本仓库源码系统讲解 sqlmap 的安装部署、命令行用法、核心功能模块与关键参数帮助你快速掌握从目标指定、注入检测到数据提取、系统接管的完整工作流。sqlmap 是什么根据官方 README 的定义sqlmap 是一个开源渗透测试工具它自动化了发现并利用 SQL 注入漏洞、接管数据库服务器的整个过程。它配备强大的检测引擎为专业渗透测试人员提供了许多针对性功能以及一系列广泛的开关选项包括数据库指纹识别fingerprinting自动识别目标后端数据库类型与版本数据提取从数据库中采集表、列、记录等数据文件系统访问在具备相应权限时读取底层文件系统操作系统命令执行通过 out-of-band带外连接在目标操作系统上执行命令。从源码结构看sqlmap 的主流程集中在 sqlmap.py 的main()与 lib/controller/controller.py 的start()中命令行参数经cmdLineParser()解析后交由initOptions()、init()完成全局配置初始化最终进入控制器启动注入检测与枚举流程。检测引擎的核心载荷全部收录在 data/xml/payloads 目录下按注入技术分为六类 XML 文件boolean_blind.xml布尔盲注、error_based.xml报错注入、inline_query.xml内联查询、stacked_queries.xml堆叠查询、time_blind.xml时间盲注与union_query.xml联合查询。环境要求与依赖README 明确说明sqlmap开箱即用支持 Python2.7与3.x可在任意平台上运行。入口文件 sqlmap.py 内部对两种解释器做了兼容处理如from __future__ import print_function、sys.dont_write_bytecode True并在启动时先导入lib.utils.versioncheck做版本与安装完整性校验。sqlmap 本体运行无需任何第三方 Python 库但直接连接数据库-d选项时需要对应 DBMS 的驱动。依赖检查逻辑位于 lib/utils/deps.py 的checkDependencies()MySQLpymysqlPostgreSQL / CrateDBpsycopg2OracleoracledbMicrosoft SQL Server / Sybase_mssqlpymssql版本须 ≥ 1.0.2SQLitesqlite3标准库AccesspyodbcFirebirdfirebirdsqlDB2 / Informixibm_db_dbiMonetDBpymonetdbVerticavertica_pythonPrestoprestodbClickHouseclickhouse_connect等此外带外接管out-of-band takeover功能依赖python-impacketGUI 界面依赖tkinterWindows 上的 TAB 补全与历史记录依赖pyreadline。缺失这些库时 sqlmap 仅打印警告不影响常规 HTTP 注入检测。安装方式官方提供了三种获取方式任选其一即可无需编译安装下载归档包从官方仓库下载最新的.tar.gztarball或.zipzipball压缩包解压后直接使用。Git 克隆推荐使用浅克隆减少下载体积git clone --depth 1 https://gitcode.com/gh_mirrors/sq/sqlmap.git sqlmap-dev直接运行克隆或解压后在目录内直接调用入口脚本即可无需pip install。快速上手查看帮助安装完成后在仓库根目录执行python sqlmap.py -h-h列出基础选项与开关执行python sqlmap.py -hh则显示全部选项与开关高级帮助。这两类帮助内容的解析器定义在 lib/parse/cmdline.py 的cmdLineParser()中它同时兼容 Python 2 的optparse与 Python 3 的argparse并按 Target、Request、Optimization、Enumeration、Takeover 等分组组织参数。一个最小可用的检测命令示例python sqlmap.py -u http://example.com/vuln.php?id1 --batch--batch表示以非交互模式运行所有询问均采用默认答案便于脚本化与自动化。目标指定六种输入方式命令行帮助中 Target 分组对应 sqlmap.conf 的[Target]段要求至少提供一种目标来源选项作用示例-u, --url指定目标 URLhttp://www.site.com/vuln.php?id1-d数据库直接连接串mysql://USER:PASSWORDIP:PORT/DBNAME-l从 Burp / WebScarab 代理日志解析目标代理请求日志文件路径-m批量扫描文本文件中列出的多个目标每行一个 URL 的文本文件-r从文件加载完整 HTTP 请求含请求行、Header 与 Body 的请求文件-g用 Google dork 表达式获取目标主机ext:php inurl:id-c从 INI 配置文件加载全部选项sqlmap.conf--openapi从 OpenAPI/Swagger 规范文件或 URL派生目标接口描述文档路径其中-r特别适合复现浏览器或代理中捕获的真实请求例如登录后的 POST 请求文件内容形如POST /login.jsp HTTP/1.1 Host: example.com User-Agent: Mozilla/4.0 useridjoepasswordguessme请求控制与规避策略在 Request 分组中对应 sqlmap.conf 的[Request]段常用参数包括--data id1指定 POST 数据--param-del自定义参数分隔符默认--cookie/--cookie-del携带会话 Cookie 并自定义分隔符默认;--load-cookies加载 Netscape/wget 格式的 Cookie 文件-A, --user-agent/--random-agent/--mobile自定义、随机化或模拟智能手机 UA-H, --header/--headers追加单个或多个自定义 Header如X-Forwarded-For: 127.0.0.1--auth-typeBasic / Digest / Bearer / NTLM / PKI与--auth-credname:password--proxy/--proxy-cred/--proxy-file/--proxy-freq配置代理或代理池轮换--tor/--tor-port/--tor-type/--check-tor接入 Tor 匿名网络并校验其可用性--delay每次请求间隔秒数、--timeout超时秒数、--retries超时重试次数--randomize随机化指定参数值--safe-url/--safe-post测试间隙访问安全 URL 维持会话--ignore-code/--abort-code忽略或终止于指定的 HTTP 状态码。这些开关在 sqlmap.conf 中均有对应的默认值注释说明例如dropSetCookie False、http10 False、http2 False可以配置文件方式整体复用到多目标扫描中。注入检测技术与枚举数据六种注入技术--technique参数用于指定测试使用的注入技术默认全部启用。技术字母含义对应 data/xml/payloads 的六个载荷文件BBoolean-based blind布尔盲注EError-based报错注入UUnion query联合查询SStacked queries堆叠查询支持多语句TTime-based blind时间盲注QInline queries内联查询例如仅使用时间盲注--techniqueT。枚举与数据提取Enumeration 分组提供了一整套从浅入深的数据枚举开关--current-db/--current-user获取当前数据库名与数据库用户--dbs枚举全部数据库--tables枚举指定数据库-D dbname的表--columns搭配-T tablename枚举列--dump转储指定表数据可配合-D、-T、-C精确定位--dump-all转储全部库表数据--sql-shell进入交互式 SQL Shell 执行任意 SQL 语句--os-shell尝试通过 out-of-band 或文件上传等手段获得操作系统命令执行权限。优化与自动化--threads并发线程数默认 1多线程可显著提速--batch批处理模式不交互提问直接采用默认值--flush-session清空本地会话缓存lib/core/session.py 管理的 SQLite 会话文件在会话损坏或误判时重置检测状态--dump-format转储输出格式--dump-file指定转储文件。Tamper 脚本为绕过 WAF 与输入过滤tamper 目录内置了大量 payload 变形脚本例如space2comment空格替换为注释、between替换为BETWEEN、equaltolike替换为LIKE、base64encode、charencode等可用--tamper串联多个脚本组合使用。配置文件sqlmap.confsqlmap.conf 是 INI 格式的全局配置文件将命令行参数以段 键 值的形式持久化适合固定环境下的重复扫描。其结构与命令行分组一一对应[Target]url、direct、logFile、bulkFile、requestFile、googleDork、sessionFile[Request]method、data、paramDel、cookie、agent、headers、authType、authCred、proxy、tor、delay、timeout等后续段落还覆盖优化、注入、枚举、接管等全部选项多数键给出了合法值True/False与示例。使用方式python sqlmap.py -c sqlmap.conf或-c指定其他配置文件路径。项目结构速览与延伸阅读README.md英文主 README其中列出了全部翻译版本的索引本文即为其俄语翻译之一另有 中文版 等二十余种语言LICENSEGPLv2 开源许可证sqlmap.py命令行入口与全局异常处理lib/controller检测与利用流程控制器controller.py的start()为入口lib/parse命令行、配置文件、HTML、OpenAPI 等各类输入解析器plugins/dbms各数据库MySQL、Oracle、PostgreSQL、MSSQL、SQLite 等 30 余种的指纹识别、枚举、文件系统与接管实现data/xml/payloads六类注入技术载荷tests覆盖解析、注入引擎、枚举、tamper 等模块的自动化测试用例可作为理解各功能行为的补充依据。需要强调的是sqlmap 属于渗透测试工具应在获得授权的前提下仅用于安全评估与漏洞验证等合法场景。【免费下载链接】sqlmapAutomatic SQL injection and database takeover tool项目地址: https://gitcode.com/gh_mirrors/sq/sqlmap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表