mysql 注入之权限

2023-09-16 17:03:27

SQL注入之高权限注入

在数据库中区分有数据库系统用户与数据库普通用户,二者的划分主要体现在对一些高级函数与资源表的访问权限上。直白一些就是高权限系统用户拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。

网站在创建的时候会调用数据库链接,会区分系统用户链接与普通用户链接;当多个网站存在一个数据库的时候,root就拥有最高权限可以对多个网站进行管辖,普通用户仅拥有当前网站和配置的部分权限。所以当我们获取到普通用户权限时,我们只拥有单个数据库权限,甚至文件读写失败;取得高权限用户权限,不仅可以查看所有数据库,还可以对服务器文件进行读写操作。

多个网站共享mysql服务器

image.png

image.png

MySQL 权限介绍

mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表,
我当前的版本mysql 5.7.22 。

select * from user where user='root' and host='localhost'\G;

	mysql权限表的验证过程为:

	先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。

	通过身份认证后,进行权限分配,
	按照user,db,tables_priv,columns_priv的顺序进行验证。
	即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,
	将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,
	并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。
 
 2.1 系统权限表
	User表:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限 
	Db表:存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库 
	Tables_priv表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这个表 
	Columns_priv表:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的这个字段 
	Procs_priv表:存放存储过程和函数级别的权限


 2. MySQL 权限级别分为: 
	全局性的管理权限: 作用于整个MySQL实例级别 
	数据库级别的权限: 作用于某个指定的数据库上或者所有的数据库上 
	数据库对象级别的权限:作用于指定的数据库对象上(表、视图等)或者所有的数据库对象
 
 3.查看mysql 有哪些用户:
	mysql> select user,host from mysql.user;
 
 4.查看用户对应权限
 select * from user where user='root' and host='localhost'\G;  #所有权限都是Y ,就是什么权限都有
 
 5.创建 mysql 用户
	有两种方式创建MySQL授权用户

	执行create user/grant命令(推荐方式)
	CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
	通过insert语句直接操作MySQL系统权限表
 
 6.只提供id查询权限
 grant select(id) on test.temp to test1@'localhost' identified by '123456';
 
 7.把普通用户变成管理员
	GRANT ALL PRIVILEGES ON *.* TO 'test1'@'localhost' WITH GRANT OPTION;

 8.删除用户
	drop user finley@'localhost';

更多推荐

20230919后台面经整理

1.你认为什么是操作系统,操作系统有哪些功能os是:管理资源、向用户提供服务、硬件机器的扩展1.进程线程管理:状态、控制、通信等2.存储管理:分配回收、地址转换3.文件管理:目录、操作、磁盘、存取4.设备管理:设备驱动、分配回收、缓冲技术5.用户接口:系统命令、编程接口2.简单linux命令使用:toppsnetsta

【Redis】五大基本数据类型操作大全

作者简介目录1.概述2.String3.List4.Set5.Hash6.zSet1.概述redis中一共提供了五种数据结构:StringListSetHashzSet很多时候无法记全这五种数据结构,这里教大家一种办法,这样来记忆即可:1.Redis是一个KV形式的内存数据库,所以其数据组织方式其实就是以KV为基准然后

Java开发 - Canal进阶之和Redis的数据同步

前言Canal在数据同步中是非常常见的,一般我们会用它来做MySQL和Redis之间、MySQL和ES之间的数据同步,否则就是手动通过代码进行同步,造成代码耦合度高的问题,这并不是我们愿意看见的,今天这篇博客博主将给大家演示Canal的数据同步做法,敲小黑板了啊,实战中基本也是这么做的,有需要的小伙伴可以仔细研究。前文

【Vue3 源码解析】reactive 全家桶

//泛型约束:只能传入引用类型exportfunctionreactive<Textendsobject>(target:T):UnwrapNestedRefs<T>//判断只读,否则创建reactive响应式对象exportfunctionreactive(target:object){//iftryingtoobs

Dubbo高手之路3,Dubbo服务消费详解

目录引言1.介绍Dubbo服务消费的详解的目的和背景2.概述Dubbo服务消费的过程和核心概念一、Dubbo服务消费的基础知识1.Dubbo服务消费的架构和流程2.Dubbo服务消费的基本配置和使用方法二、Dubbo服务消费的注册与发现1.Dubbo服务消费的注册中心和发布中心的基本概念和特点1.1服务消费的注册中心:

从源码全面解析 dubbo 服务端服务调用的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦🍂博主正在努力完成20

Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo

若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132077288红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…Qt开发

QT中进程的创建

文章目录前言一、QProcess类介绍二、创建进程代码三、QT中进程的创建和Linux中创建线程对比总结前言本篇文章将带大家学习QT中进程的创建。一、QProcess类介绍QProcess类是Qt中用于启动和控制外部进程的类。它提供了一系列方法来执行外部命令、与进程进行交互,并获取进程的输出信息。下面是一些QProce

Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo

若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…Qt开发

R语言绘制染色体变异位置分布图,RIdeogram包

变异位点染色体分布图今天分享的内容是通过RIdeogram包绘制染色体位点分布图,并介绍一种展示差异位点的方法。在遗传学研究中,通过测序等方式获得了基因组上某些位置的基因型信息。如下表,第一列是变异位点的ID,第二列是染色体,第三列是物理位置,最后两列是两个样品的基因型。这个文件通常有好几万行,要想快速从中获得有效信息

数字孪生行业相关政策梳理--智慧水利领域相关政策(可下载)

&nbsp;&nbsp;&nbsp;&nbsp;自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的舞台,也为相关产业的发展提供了坚

热文推荐