前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >渗透测试SQL注入漏洞原理与验证(6)——SQLMAP基础

渗透测试SQL注入漏洞原理与验证(6)——SQLMAP基础

原创
作者头像
zhouzhou的奇妙编程
发布2024-09-26 18:14:08
1540
发布2024-09-26 18:14:08
举报
文章被收录于专栏:渗透测试专栏

SQLMAP

SQLMAP是一个开源的自动化SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞。

SQLMAP可以对URL干嘛?

  • 判断可注入的参数
  • 判断可以使用哪一种SQL注入技术进行注入
  • 判断识别数据库的类型
  • 根据用户的选择,从数据库中读取数据

SQLMAP支持的注入技术

  • 基于布尔的盲注:根据返回页面判断条件真假的注入。
  • 基于时间的盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
  • 基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
  • 基于联合查询的注入:可以使用UNION的情况下的注入
  • 堆查询注入:同时执行多条语句的注入。

SQLMAP支持的数据库类型

主要包括一些关系型数据库(RMDBS),如MySQL、Oracle、PostgreSQL、Microsoft SOL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、Informix、HSQLDB等。

SQLMAP检测注入漏洞的流程

  • 网站连通性检测:检测目标的连接状态。
  • WAF探测:检测网站是否受WAF保护。
  • 网页稳定性检测:检测网页是否稳定。
  • 参数动态性检测:检测参数是否具有动态性。
  • 启发式注入检测:探测该参数点是否是动态的、是否为可能的注入点。

SQLMAP的误报检测机制

误报检测:SQLMAP的布尔盲注、时间盲注方式判断注入点时,存在误报的可能为防止误报,SQLMap引入了误报检测机制。

两个基础检测算法

  • 页面相似度对比技术(在各种注入技术中大量使用):在SQLMap检测的整个过程中,会有一个原始响应的定义,指的是在网站连通性检测的过程中,如果网站成功响应,则把该响应定义为原始响应(包括状态码、HTTP响应头、HTTP响应一个HTTP请求成功响应后,将与原始响应进行对比,得出对比结果,算体)。法输出为True表示当前响应与原始响应相似,算法输出为False表示当前响应与原始响应不相似。
  • 高斯分布识别响应机制(在UNION注入和时间盲注过程中使用):网站的响应是基于逻辑的,如果一组请求,网站的处理逻辑相同,那么响应几乎也是相同的如果某一个响应出现了变化,则可以认为网站处理逻辑变了,这种逻辑的变化,可能正是因为注入成功了。

SQLMAP基本使用

常见用法1 : -u参数 (直接输入目标URL)

命令实例:

代码语言:txt
复制
sqlmap  -u  "www.test.com/index.php?id=1"

验证过程:

  • 判断可注入的参数
  • 判断可以用哪种SQL注入技术来注入
  • 识别出所有存在的注入类型
  • 尝试去判定数据库版本、开发语言、操作系统版本
代码语言:txt
复制
sqlmap -u http://xxx.xxx.xxx.xxx/page.php?id=10  --current-db //爆当前库

sqlmap -u http://xxx.xxx.xxx.xxx/page.php?id=10 -D 数据库名   --tables   //爆表名

sqlmap -u http://xxx.xxx.xxx.xxx/page.php?id=10 -D  数据库名 -T 表名 --columns //爆字段

sqlmap -u http://xxx.xxx.xxx.xxx/page.php?id=10 -D 数据库名 -T 表名  -C  字段名1,字段名2,字段名3...(互相用逗号隔开)   --dump   //显示数据

SQLMAP基本使用实例1

目标靶机 : SQLi-Labs的less-1

要求 : 利用SQLMAP实现注入,获取users表中存储的用户名、密码

爆当前数据库的库名

爆指定数据库中的表名

爆指定数据表中的字段名

爆指定字段的值

常见用法2: -r 参数(从文本文件中获取http请求

命令实例:

代码语言:txt
复制
sqlmap  -r  /usr/a.txt

说明 : 使用该命令时须指明a.txt(保存着http请求包)文件所在的绝对路径

验证过程 : 与-u参数类似

  • 判断可注入的参数
  • 判断可以用哪种SQL注入技术来注入
  • 识别出所有存在的注入类型
  • 尝试去判定数据库版本、开发语言、操作系统版本

SQLMAP基本使用实例2

目标靶机 : SQLi-Labs的less-11

利用Burpsuite截取HTTP Request报文

将截取到的HTTP Request报文保存在文本文件中

利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆当前数据库的库名

利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定数据库的表名

利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定数据表的字段名

利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定字段的值

常见用法3:-m参数(从文件中取出保存的url进行检测)

命令实例:

代码语言:txt
复制
sqlmap -m /usr/b.txt

说明 : 使用该命令时须指明b.txt(保存着多项URL)文件所在的绝对路径。

验证过程 : 与-u参数类似

  • 判断可注入的参数
  • 判断可以用哪种SQL注入技术来注入
  • 识别出所有存在的注入类型
  • 尝试去判定数据库版本、开发语言、操作系统版本

本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!

本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。

我正在参与2024腾讯21天技术创作挑战赛|年中回顾特别季,年中技术沉淀,拯救你的flag,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQLMAP
    • SQLMAP可以对URL干嘛?
      • SQLMAP支持的注入技术
        • SQLMAP支持的数据库类型
          • SQLMAP检测注入漏洞的流程
            • SQLMAP的误报检测机制
            • SQLMAP基本使用
              • 常见用法1 : -u参数 (直接输入目标URL)
                • SQLMAP基本使用实例1
                  • 爆当前数据库的库名
                  • 爆指定数据库中的表名
                  • 爆指定数据表中的字段名
                  • 爆指定字段的值
                • 常见用法2: -r 参数(从文本文件中获取http请求
                  • SQLMAP基本使用实例2
                    • 利用Burpsuite截取HTTP Request报文
                    • 将截取到的HTTP Request报文保存在文本文件中
                    • 利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆当前数据库的库名
                    • 利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定数据库的表名
                    • 利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定数据表的字段名
                    • 利用SQLMAP对该文本文件中涉及的目标网站进行注入--爆指定字段的值
                  • 常见用法3:-m参数(从文件中取出保存的url进行检测)
                  相关产品与服务
                  渗透测试服务
                  腾讯云渗透测试服务(Penetration Test Service, PTS),为客户提供针对于 Web 应用、移动 APP、微信小程序的黑盒安全测试内容;可以覆盖安全漏洞全生命周期,包括漏洞的发现、利用、修复以及修复后的验证。使用腾讯云渗透测试服务,可以随时将安全测试这一动作加入到您的产品研发、应用上线、安全自检等计划中来。不仅快速且便捷,而且稳定可靠,易于管理,有效的提升应用的安全能力。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档