news 2026/4/24 1:44:47

sqlmap下载和安装保姆级教程(附安装包)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sqlmap下载和安装保姆级教程(附安装包)

介绍sqlmap

SQLmap 是一款开源、跨平台的自动化 SQL 注入检测和利用工具,被誉为渗透测试领域的“瑞士军刀”。它由 Python 语言开发,能够极大地简化手动进行 SQL 注入测试的复杂流程,是网络安全从业者进行安全评估和漏洞验证的行业标准工具之一。

🎯 核心功能

SQLmap 的功能非常强大,覆盖了从漏洞发现到利用的完整链条:

  • 自动化漏洞检测:能够自动识别并利用多种类型的 SQL 注入漏洞,支持 GET、POST、Cookie、HTTP 头部等多种注入点。
  • 数据库指纹识别:自动探测后端数据库的类型和版本,支持 MySQL、Oracle、SQL Server、PostgreSQL、SQLite、Access 等多种主流数据库。
  • 数据枚举与提取:可以枚举数据库名、表名、字段名,并直接导出(Dump)表中的敏感数据,如用户名和密码。
  • 高级权限利用:在条件允许的情况下,支持获取数据库管理员权限、读取或写入服务器文件,甚至通过--os-shell参数获取目标操作系统的命令行 Shell。
  • WAF 绕过:内置了超过 60 种 Tamper 脚本,可以对注入 Payload 进行混淆和编码,以尝试绕过 Web 应用防火墙(WAF)的防护。

下载

1.本文附安装包

2.官网:https://sqlmap.org/

3.GitHub 仓库下载源码压缩包,解压后即可使用

4.使用 Git 命令克隆项目:git clone https://github.com/sqlmapproject/sqlmap.git

安装sqlmap

一、配置python环境(有就不用)

1) 下载解压 sqlmap 文件,双击 python-3.11.0b1-amd64.exe 启动安装,出现下图所示界面,勾选 “Add_Python 3.11 to PATH”,点击 “Cancel”:

注意,勾选 “Add_Python 3.11 to PATH”,会自动配置环境变量。

2) 右击此电脑,点击 “属性”:
3) 点击 “高级系统设置”:

4) 点击 “环境变量”:

5) 在 “系统变量” 中选择 “Path”,点击“编辑”:

6) 点击 “编辑文本”:

7) 在 “变量值” 后,把自己安装的 python 路径,复制粘贴进去就可以了:

注意:在粘贴路径 “D:\install\python” 时,前面要加上英文输入法下的 “;”。

8) 配置完整,Win + R ,用 cmd 调出命令行,输入 python ,出现版本号及其他信息就安装完成

二、开始”整“sqlmap

(一)在文件夹找到python文件夹

1.上面那个界面既然你已经处于>>>提示符下,直接输入以下代码并回车,即可看到确切的路径:

import sys print(sys.executable)
  • 解释:这条命令会直接打印出当前正在运行的 Python 解释器文件的完整路径(例如C:\Users\...\Python310\python.exe)。
  • 注意:如果你只想看文件夹路径而不是文件路径,可以输入print(sys.prefix)

2.使用命令行where命令(最快捷)

如果你想退回到普通的命令提示符(C:\Users\...>)来查看,可以按以下步骤操作:

  1. 在当前的>>>后面输入exit()并回车,或者按Ctrl + Z然后回车,退出 Python 环境。
  2. 回到黑色窗口的普通命令行模式后,输入以下命令并回车:
    where python
  3. 系统会直接列出python.exe所在的完整路径。

(二)存放sqlmap代码

1.在 python 目录下,新建一个 sqlmap 文件夹:

2.把 sqlmap的这个.zip 文件解压到 sqlmap 文件夹下:

(三)命令行测试

1.在 sqlmap 文件夹中打开控制台(在地址栏输入 cmd 回车):

2.输入命令 python sqlmap.py 或 python sqlmap.py -h ,显示下图所示界面,安装成功

安装好了sqlmap,能怎么使用

既然你已经安装好了 SQLmap,并且之前成功配置了 Python 环境,那么使用它非常简单。SQLmap 是一款命令行工具,没有图形界面,主要通过命令提示符(CMD)来操作。

以下是保姆级的使用教程,带你从启动到完成一次基础的数据库检测。

🛠️ 第一步:如何启动 SQLmap

  1. 打开命令提示符(CMD)。
  2. 使用cd命令进入你解压 SQLmap 的文件夹。
  • 例如:cd D:\Tools\sqlmap(根据你实际安装的路径修改)
  1. 输入以下命令验证是否启动成功:
    python sqlmap.py --version
    如果显示了版本号,说明可以开始使用了。


🚀 第二步:基础检测命令(GET 请求)

假设你要检测的目标网址是http://example.com/news.php?id=1注意:请仅对你拥有授权的目标或靶场进行测试)。

1. 检测是否存在注入点
这是最基础的命令,用来判断这个 URL 的参数(这里是id)是否有漏洞。

python sqlmap.py -u "http://example.com/news.php?id=1" --batch
  • -u: 指定目标 URL。
  • --batch:强烈建议新手加上。它的意思是“全程使用默认选项”,避免工具每步都停下来问你 Yes/No。

2. 获取所有数据库名称
如果上一步检测出有漏洞,你可以用这个命令列出网站所有的数据库名:

python sqlmap.py -u "http://example.com/news.php?id=1" --dbs --batch
  • --dbs: 枚举数据库管理系统的所有数据库。

3. 获取指定数据库的表
假设你发现了数据库名叫webapp,想看里面有哪些表:

python sqlmap.py -u "http://example.com/news.php?id=1" -D webapp --tables --batch
  • -D: 指定要操作的数据库名。
  • --tables: 列出该数据库下的所有表。

4. 获取指定表的字段(列)
假设你发现了表名叫users,想看里面有哪些列(如用户名、密码等):

python sqlmap.py -u "http://example.com/news.php?id=1" -D webapp -T users --columns --batch
  • -T: 指定要操作的表名。
  • --columns: 列出字段。

5. 导出数据(Dump)
最后,如果你想把users表里的usernamepassword内容导出来:

python sqlmap.py -u "http://example.com/news.php?id=1" -D webapp -T users -C username,password --dump --batch
  • -C: 指定要导出的列名(多个列用逗号隔开)。
  • --dump: 导出数据内容。

📝 第三步:进阶场景(POST 请求与 Cookie)

并不是所有漏洞都在 URL 链接里,很多在登录框或搜索框(POST 请求)中。

1. POST 请求注入(如登录表单)
如果注入点在 POST 数据中,使用--data参数:

python sqlmap.py -u "http://example.com/login.php" --data="username=admin&password=123" --batch
  • --data: 后面跟的是 POST 提交的数据,格式通常是参数名=参数值

2. 携带 Cookie 注入
有些网站需要登录才能访问,或者注入点在 Cookie 里(如id=1),你需要加上 Cookie 信息:

python sqlmap.py -u "http://example.com/index.php" --cookie="id=1; session=abc123" --batch
  • 注意:如果注入点在 Cookie 中,通常还需要加上--level=2或更高等级,告诉 SQLmap 去检测 Cookie。

⚙️ 第四步:关键参数速查表

为了让你更灵活地使用,这里整理了几个最常用的参数:

参数说明示例
-u指定目标 URL-u "http://..."
--dbs获取所有数据库名--dbs
--tables获取表名-D 库名 --tables
--columns获取字段名-T 表名 --columns
--dump导出数据-C 字段 --dump
--data指定 POST 数据--data="id=1"
--level探测等级(1-5,默认1)--level=3(测Cookie/UA)
--risk风险等级(1-3,默认1)--risk=2(增加测试深度)
--tamper使用脚本绕过 WAF--tamper=space2comment

⚠️ 避坑指南与注意事项

  1. Level 和 Risk 参数
    • 默认情况下,SQLmap 只检测 URL 参数(Level 1)。如果你想检测 Cookie 或 HTTP 头,需要设置--level=23
    • 默认风险等级是 1(最安全)。在 CTF 比赛或深度测试中,可以设为--risk=23,但这可能会对数据库造成更大影响,生产环境慎用
  2. 网络与代理
    • 如果目标网站有防火墙或速度很慢,可以使用--delay=1设置请求延迟,或者使用--proxy设置代理。
  3. 法律红线
    • 再次强调:SQLmap 是极其强大的攻击工具。请务必在本地搭建的靶场(如 DVWA、sqli-labs)获得明确书面授权的环境中进行练习。未经授权扫描政府、教育或商业网站属于违法行为。

建议你先在本地搭建一个DVWAsqli-labs靶场,用上面的命令练练手,熟悉流程后再进行更深入的学习。

面试中可能会问到的关于sqlmap问题

在网络安全相关的面试中,关于 SQLmap 的提问通常旨在考察候选人对 SQL 注入原理的理解、工具的熟练程度以及实战经验。以下是面试中可能会遇到的关于 SQLmap 的常见问题,分为基础、进阶和实战场景三类。

🧐 基础概念与命令

这类问题主要考察你是否真正使用过 SQLmap,以及对基本流程的掌握。

  1. 请简述 SQLmap 的工作原理。

    • 回答要点:SQLmap 是一个自动化 SQL 注入工具。它通过向目标 URL 的参数、Cookie、POST 数据等位置发送各种精心构造的 SQL 语句(Payload),然后根据服务器的响应(如页面内容变化、响应时间延迟、数据库报错信息)来判断是否存在注入点,并进一步利用漏洞获取数据库信息。
  2. 写出几个 SQLmap 最常用的命令参数及其作用。

    • 回答要点:这是一个高频问题,你需要能流利说出几个核心参数。
      • -u: 指定目标 URL。
      • --dbs: 枚举目标数据库服务器上的所有数据库名。
      • --tables: 获取指定数据库中的所有表名。
      • --columns: 获取指定表中的所有字段名。
      • --dump: 导出指定表或字段的数据。
      • --batch: 自动以默认选项运行,避免交互式提问,适合批量或自动化操作。
      • --os-shell: 在满足特定条件时,获取目标操作系统的交互式 Shell。
  3. 如何对 POST 请求的注入点(如登录框)进行测试?

    • 回答要点:主要有两种方式。
      1. 使用--data参数,后面跟上 POST 请求的数据体。例如:sqlmap -u "http://example.com/login" --data="username=admin&password=123"
      2. 更推荐的方式是使用 Burp Suite 等抓包工具,将完整的 HTTP 请求(包括 Headers、Cookies 和 POST 数据)保存到一个文本文件(如request.txt)中,然后使用-r参数加载该文件。例如:sqlmap -r request.txt。这种方式更准确,能保留所有请求头信息。
  4. SQLmap 支持哪些 SQL 注入技术?

    • 回答要点:SQLmap 支持多种注入技术,可以通过--technique参数指定。常见的有:
      • B: Boolean-based blind (布尔盲注)
      • E: Error-based (报错注入)
      • U: UNION query (联合查询注入)
      • S: Stacked queries (堆叠查询注入)
      • T: Time-based blind (时间盲注)

⚙️ 进阶原理与技巧

这类问题考察你对工具底层逻辑和高级功能的理解。

  1. --level--risk参数有什么区别?在什么情况下会调整它们?

    • 回答要点
      • --level(探测等级):范围是 1-5,默认是 1。等级越高,SQLmap 测试的位置越多。Level 1 只测试 URL 参数;Level 2 会额外测试 HTTP Cookie;Level 3 会测试 User-Agent 和 Referer 等 HTTP 头。当怀疑注入点在 Cookie 或其他请求头中时,需要提高 level。
      • --risk(风险等级):范围是 1-3,默认是 1。等级越高,使用的 Payload 越激进,可能对数据库造成更大影响(如进行更多次的查询、尝试更复杂的注入)。在常规测试中保持默认即可,在 CTF 或深度渗透时可能会提高到 2 或 3。
  2. SQLmap 的--os-shell功能是如何实现的?需要满足哪些条件?

    • 回答要点:这是一个经典的原理性问题。--os-shell并非直接获取 Shell,其本质是利用 SQL 注入漏洞,在数据库服务器上写入一个 WebShell 文件,然后通过访问这个 WebShell 来执行系统命令。
    • 需要满足的条件
      1. 数据库用户具有高权限:例如 MySQL 的root用户,至少需要有FILE权限。
      2. 知道网站的物理绝对路径:需要知道 Web 目录在哪里,才能把 WebShell 写到能被 Web 服务器访问的位置。
      3. 数据库配置允许文件写入:例如 MySQL 的secure_file_priv配置项不能限制文件导出。
  3. 如何使用 SQLmap 绕过 WAF(Web应用防火墙)?

    • 回答要点:SQLmap 提供了多种绕过手段。
      • --tamper参数:这是最主要的方式。SQLmap 内置了大量的 tamper 脚本,用于对 Payload 进行编码、混淆和替换。例如space2comment(用注释符替换空格)、charunicodeencode(字符编码) 等。
      • --delay参数:设置请求延迟,降低扫描速度,避免触发 WAF 的频率限制。
      • --random-agent参数:随机更换 User-Agent,避免被 WAF 识别为扫描器。
      • 使用代理 (--proxy):通过代理 IP 隐藏真实来源。
  4. SQLmap API 是什么?有什么用途?

    • 回答要点:SQLmap API 是一个基于 JSON 的接口服务,允许用户以编程方式(而非命令行)与 SQLmap 进行交互。
    • 用途:主要用于将 SQLmap 集成到自动化平台、扫描器或自定义脚本中。通过 API,你可以创建扫描任务、配置参数、启动扫描、获取状态和结果,非常适合批量自动化测试场景。

🎯 实战场景与排错

这类问题考察你解决实际问题的能力。

  1. 如果目标网站有登录验证,如何使用 SQLmap 测试登录后的页面?

    • 回答要点:核心是带上认证信息。最常用的方法是使用 Burp Suite 抓取一个已登录状态下的完整请求包,保存为request.txt文件,然后使用sqlmap -r request.txt命令。SQLmap 会自动读取文件中的 Cookie 或其他认证信息。也可以手动指定--cookie参数。
  2. 扫描过程中,你发现 SQLmap 的 User-Agent 被 WAF 拦截了,你会怎么办?

    • 回答要点
      1. 使用--random-agent参数,让 SQLmap 随机使用常见的浏览器 User-Agent。
      2. 使用-A参数手动指定一个正常的 User-Agent 字符串。
      3. 结合-r参数,使用一个包含正常 User-Agent 的请求文件。
  3. 在什么情况下,你会选择使用-r参数加载请求文件,而不是-u--data

    • 回答要点:当目标请求比较复杂时,-r是更优选择。例如:
      • 请求包含复杂的、自定义的 HTTP 头。
      • 注入点可能在某个不常见的 Header 中(如X-Forwarded-For)。
      • POST 数据格式不是简单的key=value,而是 JSON 或 XML。
      • 需要精确复现一个包含 Cookie、Referer 等信息的特定请求。
  4. 如何对多个 URL 进行批量扫描?

    • 回答要点:将所有待测试的 URL 保存到一个文本文件(如urls.txt)中,每行一个 URL。然后使用-m参数指定该文件。例如:sqlmap -m urls.txt --batch
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 1:36:17

代价敏感学习:解决不平衡分类问题的关键技术

1. 不平衡分类问题的本质与挑战在真实世界的数据分析场景中,我们经常会遇到类别分布严重不均衡的情况。比如在信用卡欺诈检测中,正常交易可能占总样本的99.9%,而欺诈交易仅占0.1%。这种类别不平衡会导致传统机器学习模型产生严重偏差——模型…

作者头像 李华
网站建设 2026/4/24 1:36:16

conda 学习记录

准备进军具身智能方向了,先从使用 conda 环境开始入手,虽然已经学习了一段时间了,但是还是想系统梳理一遍 conda 用法,借此机会来系统回忆一遍,欢迎各位大佬进行补充! 1 Conda 简介 略,此处不…

作者头像 李华
网站建设 2026/4/24 1:31:22

Steam成就管理器完整指南:5分钟学会如何轻松管理游戏成就

Steam成就管理器完整指南:5分钟学会如何轻松管理游戏成就 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager Steam成就管理器(Steam A…

作者头像 李华
网站建设 2026/4/24 1:29:41

MPU6050的DMP库移植到STM32CubeIDE全记录:从固件下载到LCD显示姿态角

MPU6050的DMP库移植到STM32CubeIDE全记录:从固件下载到LCD显示姿态角 在嵌入式开发领域,运动传感器数据处理一直是热门话题。MPU6050作为一款集成了三轴陀螺仪和三轴加速度计的6轴运动处理传感器,因其高性价比和丰富功能被广泛应用于无人机、…

作者头像 李华