sqlmap 用户手册
sqlmap 官方 WikiGitHub 仓库
  • 文档介绍
  • 用户手册
  • 介绍
  • 技术
  • 特性
  • 下载更新
  • 相关依赖
  • 历史
  • 用法
    • 输出详细等级
    • 目标
    • 请求
    • 优化
    • 注入
    • 检测
    • 技术
    • 指纹识别
    • 枚举
    • 暴力破解
    • 用户自定义函数注入
    • 访问文件系统
    • 接管操作系统
    • 访问 Windows 注册表
    • 常规选项
    • 杂项
    • API(REST-JSON)
  • 许可证
  • 杂项
  • FAQ
  • 展示
  • 截图
  • 第三方库
由 GitBook 提供支持

Translated by kvko.live © Since 2016

在本页
  • 检测和利用 SQL 注入漏洞
  • 直连 DBMS

这有帮助吗?

在GitHub上编辑
导出为 PDF

介绍

上一页用户手册下一页技术

最后更新于5个月前

这有帮助吗?

译自:

检测和利用 SQL 注入漏洞

假设你正在进行 Web 应用审计,发现有某个 Web 页面接受来自用户端提供的动态数据,这些数据通过 GET,POST 或 Cookie 参数或 HTTP User-Agent 请求头发送。 因而,你想测试是否可以通过参数构造出 SQL 注入漏洞,如果有漏洞,则可以利用它们从后端 DBMS(Database Management System,数据库管理系统)中获取尽可能多的信息,甚至进一步控制底层的文件系统和操作系统。

简而言之,考虑下面的 url:

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1

假设:

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1

页面显示跟原来的一样(AND+1=1 条件取值为 True(译者注:url 编码中 + 会被转成空格)),而:

http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2

页面显示跟原来的不一样(AND+1=2 条件取值为 False)。这可能说明 index.php 的 GET 参数 id 存在 SQL 注入漏洞。此外,这种情形也表明用户输入的数据在 SQL 语句传送到 DBMS 之前没有被过滤。

这种设计缺陷在动态网页应用中十分常见,此类型漏洞与后端 DBMS 或后端编程语言并没有关系,漏洞的引入通常存在于代码的编写逻辑里面。从 2013 年开始,已将此类漏洞列入(译者注:原链接失效,重新添加了有效链接)严重 Web 应用漏洞的名单。

从上面的例子我们发现了存在可以利用的参数,现在我们可以通过在每一次的 HTTP 请求中修改 id 进行相关的漏洞检测。

重回上面的情景,根据以往经验,我们可以对 get_ini.php 页面中如何使用用户提交的参数值构建出相应的 SELECT 语句做一个大致的猜测。参考下面的 PHP 伪代码:

$query = "SELECT [column name(s)] FROM [table name] WHERE id=" . $_REQUEST['id'];

如你所见,通过在 id 参数后面添加符合语法并且布尔值为 True 的 SQL 语句(例如 id=1 AND 1=1),能够使 Web 应用返回和之前合法请求(没有添加其它的 SQL 语句)一模一样的页面。由此可见,后端 DBMS 执行了先前我们注入的 SQL 语句。上面的例子展示了一个基于布尔值的简单 SQL 盲注。当然,sqlmap 可以检测出任意类型的 SQL 注入漏洞,并相应地调整其后续的工作流程。

在这个简单的场景中不只是可以添加一个或多个 SQL 判断条件语句,还可以(取决于 DBMS 类型)添加更多的 SQL 堆叠查询(Stacked queries)语句。例如:[...]&id=1; 其他 SQL 查询语句#。

sqlmap 能自动识别和利用这类型漏洞。将源链接 http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 添加到 sqlmap,它能够自动完成下面操作:

  • 识别有漏洞的参数(比如这个例子中的 id)

  • 针对有漏洞的参数,自动选取对应类型的 SQL 注入技术

  • 识别后端 DBMS 的相关指纹信息

  • 根据用户使用的选项,它还能采集尽可能多的指纹信息,拉取数据或是掌管整个数据库服务器

网上还有很多深入讲解如何检测、利用和防止 SQL 注入漏洞的资源。推荐你在深入学习使用 sqlmap 之前阅读这些材料。

直连 DBMS

在 sqlmap 0.8 版本推出前,sqlmap 被认为是 Web 应用渗透测试工程师/新手/技术爱好者等受众使用的又一款 SQL 注入工具。然而,随着使用者的成长,渗透技术的发展,sqlmap 同样也跟着演化。现在 sqlmap 支持一个新的开关选项 -d,它允许你通过 DBMS 守护进程监听的 TCP 端口直接连接目标数据库服务器,便于你使用 SQL 注入技术对目标数据库进行攻击。

Introduction
OWASP(Open Web Application Security Project,开放 Web 应用安全组织)
最常见
前十