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

5-2〔OSCP ◈ 研记〕❘ SQL注入攻击▸MySQL MSSQL基础

      郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
Whoami!-CSDN博客🚀

​​​​​​


𖤐 让我们开启SQL注入的新世界吧,走起 ! 

𖤐 𝓛𝓮𝓽'𝓼 𝓸𝓹𝓮𝓷 𝓾𝓹 𝓪 𝓷𝓮𝔀 𝔀𝓸𝓻𝓵𝓭 𝓸𝓯 𝓢𝓠𝓛 𝓲𝓷𝓳𝓮𝓬𝓽𝓲𝓸𝓷,𝓱𝓮𝓻𝓮 𝔀𝓮 𝓰𝓸 ! 


→ 信息收集

→ 漏洞检测

→ 初始立足点

→ 权限提升 ▸SQL注入攻击▸MySQL & MSSQL基础-----我们在这儿~ 🔥🔥🔥

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1.SQL注入攻击

1.1 数据库理论

1.1.0 主流数据库类型

1.1.1 MySQL

1.1.1.1 远程连接MySQL

1.1.1.2 基础信息查询命令

1.版本信息查询

2.用户信息查询

1.1.1.3 数据库探索命令

1.显示数据库列表

2.查询特定用户信息

1.1.2 MSSQL

1.1.2.1 远程连接MSSQL

1.SQLCMD - 官方命令行工具(cmd内用)

2. Impacket-mssqlclient(Kali Linux 工具)

1.1.2.2 MSSQL基础信息查询

1.查询数据库版本信息

2.查询有哪些数据库

3.查询某个数据库有哪些

4.查询某个表中的数据

1.1.2.3 MSSQL 核心命令总结

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1.SQL注入攻击

1.1 数据库理论

      在Web应用程序测试过程中,测试人员常常需要在缺乏底层数据库系统先验知识的情况下与多种SQL数据库进行交互。不同数据库在语法、功能和特性上存在显著差异,掌握这些差异对于有效测试至关重要。接下来主要说以下两种:

特性MySQLMicrosoft SQL Server (MSSQL)
开发商OracleMicrosoft
许可证双许可(GPL/商业)商业
默认端口33061433
分支/变体MariaDBSybase ASE

数据库信息收集流程:

  1. 建立连接 → 使用mysql客户端连接目标数据库

  2. 环境识别 → 查询版本信息和当前用户

  3. 数据库枚举 → 列出所有可用数据库

  4. 权限评估 → 分析当前用户权限级别

  5. 数据提取 → 查询特定用户和认证信息

1.1.0 主流数据库类型

本文重点描述MySQL和MSSQL。

数据库特点使用场景
MySQL开源、流行Web应用
Microsoft SQL Server企业级、Windows生态企业应用
PostgreSQL高级特性、开源复杂应用
Oracle企业级、高性能大型企业

1.1.1 MySQL

    MySQL是最常见的数据库变体之一,MariaDB是MySQL的一个开源分支。从本地Kali机器连接到远程MySQL实例。

1.1.1.1 远程连接MySQL

使用mysql命令连接远程MySQL实例:

mysql -u [用户名] -p[密码] -P 3306 -h [主机地址]

🔑 参数说明

  • -u:指定用户名

  • -p:指定密码

  • -P:指定端口(默认3306)

  • -h:指定主机地址


1.1.1.2 基础信息查询命令
1.版本信息查询
SELECT version();

功能:检索正在运行的SQL实例版本信息

2.用户信息查询
SELECT system_user();

功能:验证当前会话的数据库用户,返回MySQL连接的当前用户名和主机名

⚠️ 重要说明:此处的root数据库root用户,而非操作系统管理员root用户,仅名称相同。


1.1.1.3 数据库探索命令
1.显示数据库列表
SHOW databases;

功能:收集当前MySQL会话中可访问的所有数据库列表

2.查询特定用户信息
SELECT user, authentication_string FROM mysql.user WHERE user = 'offsec';

命令解析

  • MySQL [mysql]>:表示已进入MySQL系统的mysql数据库

  • SELECT user, authentication_string:选择用户名字段和认证字符串字段(密码哈希值)

  • FROM mysql.user:从mysql数据库的user表中查询

  • WHERE user = 'offsec':筛选用户名为'offsec'的记录

🔒 密码哈希存储

为了提高安全性,MySQL使用Caching-SHA-256算法将用户密码加密后存储在authentication_string字段中。

密码哈希特性

  • 原始密码的加密表示

  • 不可逆的转换过程

  • 相同密码每次生成的哈希值可能不同(加盐处理)


1.1.2 MSSQL

Microsoft SQL Server :深度集成到 Windows 系统的数据库管理系统,在企业环境中广泛使用。

🎯 渗透测试应用流程

  1. 建立连接 → 使用 impacket-mssqlclient 连接目标

  2. 环境识别 → 查询版本信息和当前权限

  3. 数据库枚举 → 通过 information_schema 探索表结构

  4. 架构分析 → 识别 dbo 和其他架构

  5. 数据提取 → 查询敏感表获取关键信息

1.1.2.1 远程连接MSSQL
1.SQLCMD - 官方命令行工具(cmd内用)
sqlcmd -S 192.168.50.18 -U Administrator -P Lab123

特性

  • Windows 系统内置命令行工具

  • 支持从另一台机器远程运行 SQL 查询

  • 需要 GO 语句 来执行批处理命令

⚡ GO 语句详解

 ①在本地运行sqlcmd 时:

CREATE DATABASE TestDB;
GO
CREATE TABLE TestDB.dbo.Users (ID INT, Name VARCHAR(50));
GO

作用:分隔 SQL 批处理,每个 GO 表示一个批处理结束

②远程连接中,省略 GO:

CREATE DATABASE TestDB;CREATE TABLE TestDB.dbo.Users (ID INT, Name VARCHAR(50));
  • ❌ 不需要 GO 语句

  • ✅ SQL Server 自动按顺序执行语句

  • GO 不是 MSSQL TDS 协议 的一部分

2. Impacket-mssqlclient(Kali Linux 工具)
$ impacket-mssqlclient Administrator:Lab123@192.168.50.18 -windows-auth

参数说明

  • -windows-auth:强制使用 NTLM 身份验证(而非 Kerberos)

  • 基于 Impacket 框架,支持 TDS 协议(MSSQL 专用)

🔐知识补充:NTLM 身份验证详解

什么是 NTLM?

NTLM(NT LAN Manager)是微软开发的身份验证协议,广泛应用于 Windows 网络环境。

NTLM 工作原理(三次握手)

详细流程

  • 客户端请求认证 → 客户端向服务器发送认证请求

  • 服务器返回挑战 → 服务器生成并返回随机挑战值

  • 客户端响应挑战 → 客户端使用密码哈希加密挑战值并返回

  • 服务器验证 → 服务器验证响应是否正确

⚠️ 安全提示:由于存在安全漏洞,现代环境建议使用更安全的 Kerberos 协议


1.1.2.2 MSSQL基础信息查询
1.查询数据库版本信息
SELECT @@version;

功能:检索 MSSQL 服务器版本及底层 Windows 系统信息

返回信息包括

  • MSSQL 服务器版本

  • Windows Server 版本

  • 系统构建号

2.查询有哪些数据库

    由于master、tempdb、model、msdb是默认数据库,我们只想要探索自定义offsec数据库,因为它可能包含属于我们目标的数据。

3.查询某个数据库有哪些

可以通过查询相应的information_schema中的tables表来查看这个数据库。

SELECT * FROM offsec.information_schema.tables;

命令解析:从offsec数据库的information_schema.tables视图中选择所有列的数据,通常用来查看该数据库中所有的表

  • offsec:目标数据库名称

  • information_schema系统元数据数据库

  • tables:包含所有表信息的系统视图

什么是视图:

information_schema 就像一个书籍馆藏目录,它是一个大的“目录系统”,包含了多个“子目录”或“类别”。

tables 视图:就像书籍馆藏目录中的一本书清单,它记录了每本书的基本信息(例如书名、作者等),但并没有储存书的实际内容。

表和视图的区别?

📋 information_schema 视图家族

视图名称功能描述应用场景
tables所有表的基本信息数据库表枚举
columns所有列的元数据表结构分析
views所有视图信息视图对象识别
schemata数据库架构信息数据库环境了解

🔍 查询结果示例

TABLE_CATALOGTABLE_SCHEMATABLE_NAMETABLE_TYPE
offsecdbousersBASE TABLE

字段解释

  • TABLE_CATALOG:表所在数据库 → offsec

  • TABLE_SCHEMA:表架构 → dbo

  • TABLE_NAME:表名称 → users

  • TABLE_TYPE:表类型 → BASE TABLE(基础表)

🏗️ 数据库架构(Schema)概念

①什么是架构?

架构 就像是数据库中的分类文件夹,用于组织和权限管理。

②架构的作用

功能说明示例
组织管理相关对象分组用户相关表 → UserSchema
权限控制精细化权限管理Sales组只能访问Sales架构
避免命名冲突相同表名不同架构Sales.Orders vs HR.Orders

③dbo 架构说明

  • dbo = Database Owner(数据库所有者)

  • 默认表模式,通常为数据库管理员或系统管理员所有

  • 拥有对数据库中所有对象的完全权限

4.查询某个表中的数据

查询数据库offersec的users表中的数据。

SELECT * FROM offsec.dbo.users;

查询结果示例

用户密码
adminlab
guestguest

发现

  • 表包含两列:用户 和 密码

  • 两行记录:admin 和 guest 用户

  • ⚠️ 明文密码存储 - 严重安全隐患


1.1.2.3 MSSQL 核心命令总结
命令类别具体命令功能描述应用场景
连接命令impacket-mssqlclient远程连接MSSQL渗透测试连接
信息查询SELECT @@version获取系统版本环境识别
数据探索SELECT * FROM information_schema.tables枚举所有表信息收集
架构查询SELECT * FROM db.schema.table查询特定架构表目标数据访问
数据提取SELECT * FROM table提取表数据敏感信息获取

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.dtcms.com/a/477484.html

相关文章:

  • 电话交换机IPPBX的数据存储在AWS亚马逊云
  • 公共数据开放网站建设怎样做app
  • 嵌入式学习linux内核驱动8——IIC设备驱动和lm75-dht11
  • 经典机器学习深度学习领域数据集介绍
  • 个人网站怎么做才能值钱优设网页设计
  • 【Unity】MMORPG游戏开发(一)身份认证
  • 竞价网站与竞价网站之间做友情链接建邺区住房 建设 网站
  • Django视图与路由全解析:从URL到页面,一篇讲透
  • 推荐系统实战:python新能源汽车智能推荐(两种协同过滤+Django 全栈项目 源码)计算机专业✅
  • 数据结构二叉树——层序遍历 扩展二叉树的左视图
  • .NET Core + Nginx服务器零基础部署全流程(附资源)
  • 吴江区经济开发区规建设局网站手机app如何开发制作
  • excel中关联word邮件合并使用
  • const string getWord() ;和 string getWord() const ;是一样的效果吗
  • 语音控制 APP 开发:唤醒率 99% 的实现
  • Linux操作系统-进程(三)
  • electron中进程线程之间通信方式
  • wordpress 原图查看贵港seo
  • idea生成数据集调研
  • 深圳网站制作就找兴田德润安徽省建设厅网站资料下载
  • Java外功精要(3)——配置文件和mybatis
  • 2024年最新技术趋势分析:AI、前端与后端开发新动向
  • kanass入门到实战(20) - 项目负责人如何使用kanass驾驭项目
  • 无需公网 IP:神卓 K900 实现海康摄像头异地观看的两种简单方法
  • (19)100天python从入门到拿捏《多线程》
  • KVM-QEMU 的完整工作流程案例解析
  • 【LeetCode】69. x 的平方根
  • C语言入门教程(第6讲):函数——让程序学会“分工合作”的魔法
  • 福建定制网站开发泰安一级的企业建站公司
  • 公司要建立网站要怎么做太原优化型网站建设