sql注入2

1. 数据库用户权限
1)数据库用户类型与权限
  • 高权限用户(系统用户): 拥有整个数据库的操作权限,包括访问、修改、新增和删除数据等。
  • 普通用户: 权限根据分配而定,通常只能访问和操作部分数据库或表,甚至只能访问特定数据。
  • 权限差异: 高权限用户可以对多个网站进行管辖,而普通用户通常只拥有当前网站和配置的部分权限。
2)网站与数据库的关系
  • 层级关系: 一个服务器下可以有多个数据库,每个数据库下有多张表,每张表包含多个数据。
  • 共享服务器: 多个网站可以共享一个服务器,即多个网站可能使用同一个数据库。
  • 权限影响: 获取到普通用户权限时,可能只拥有单个数据库的权限,甚至文件读写失败;而取得高权限用户权限,则可以查看所有数据库,并对服务器文件进行读写操作。
3)高权限注入的概念
  • 高权限注入: 利用高权限用户身份对数据库进行注入攻击,以获取或操作更多数据。
  • 重要性: 了解高权限注入有助于理解数据库安全的重要性,并采取措施防范此类攻击。
2. 多个网站共享一个mysql服务器
1)网站与数据库的关系
  • 网站与数据库: 网站的数据通常保存在某个服务器中的数据库里,例如新浪网站的数据保存在名为mySQL服务器下的数据库A中。
  • 子网站与数据库: 大型网站如新浪会有多个子网站,如新闻板块,这些子网站的数据可能保存在同一个服务器下的不同数据库中,例如数据库B。
2)高权限注入的概念
  • 高权限注入: 当攻击者取得高权限用户权限时,不仅能查看所有数据库,还能对服务器文件进行读写操作。这种利用高权限进行的注入攻击称为高权限注入。
  • 共享服务器风险: 多个网站共享一个mysql服务器时,若其中一个网站存在安全漏洞,攻击者可能通过该漏洞获取高权限,进而威胁到共享该服务器的其他网站。
3)权限差异的影响
  • 低权限与高权限: 在低权限下,用户可能只能访问单个数据库,甚至文件读写操作都会失败。而取得高权限后,用户能查看所有数据库,并对服务器文件进行读写,这大大增加了潜在的安全风险。
3. 高权限注入概念
1)高权限注入定义与背景

  • 高权限注入定义: 高权限注入是指通过SQL注入攻击,获取到数据库的高权限用户(如root)的访问权限,从而能够对服务器上的所有数据库进行读写操作。
  • 背景说明: 在实际工作或实战中,当我们发现某个网站存在SQL注入漏洞时,如果我们的账号是高权限用户,那么我们不仅可以访问当前数据库的数据,还可以利用这个漏洞去访问其他网站的数据库。
2)高权限与普通权限的区别
  • 高权限用户: 拥有对整个MySQL服务器下面所有数据的访问、设置、更改、添加等所有操作权限。
  • 普通用户: 只拥有部分已配置的权限,通常只能访问单个数据库,甚至可能无法执行文件读写操作。
3)高权限注入的具体实现
  • 实现条件: 需要网站A存在SQL注入漏洞,并且网站A使用的用户是root权限。
  • 实现过程: 利用网站A的SQL注入漏洞,注入到网站B的数据库中,从而获取到网站B的数据。
4)高权限注入的概念总结
  • 高权限注入核心: 高权限注入的核心在于利用高权限用户对多个网站进行管辖的能力,获取到普通用户无法访问的数据。
  • 高权限注入威力: 高权限注入不仅可以查看所有数据库,还可以对服务器文件进行读写操作,具有极大的威力。
5)高权限注入的权限划分
  • 系统用户与普通用户: 在数据库中,区分有数据库系统用户与数据库普通用户。系统用户(如root)拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。
  • 权限的重要性: 获取到高权限用户权限后,可以执行更多高级操作,如跨库查询、文件读写等,而普通用户则可能受到较多限制。
4. SQL注入实验环境
1)实验环境搭建
  • 实验环境概述
    • 实验平台: 使用sqli-labs进行SQL注入实验。
    • 实验目的: 通过实际操作理解SQL注入的原理及防护方法。
  • 实验步骤
    • 步骤一: 访问靶场环境。
      • 访问路径如 localhost/sqli-labs-master/Less-2/index.php?id=1。
    • 步骤二: 分析SQL注入点。
      • 通过修改URL参数,观察页面返回结果,判断是否存在SQL注入漏洞。
  • 实验细节
    • 细节一: 判断数据库用户权限。
      • 通过SQL注入语句如 union select 1,user(),3 判断当前数据库用户权限。
      • 结果显示用户权限为 root@localhost,表明具有最高权限。
2)SQL注入实验解析
  • 源码分析
    • 源码位置: 实验环境安装目录下的 sqli-labs-master/Less-2/index.php。
    • 关键代码:
      • 包含数据库连接配置文件 include("../sql-connections/sql-connect.php");。
      • SQL查询语句 $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";。
  • 数据库连接配置
    • 配置文件: sql-connect.php。
      • 该文件包含数据库连接的用户名、密码、数据库名等信息。
      • 通过进一步包含 db-creds.inc 文件获取具体配置。
  • 权限配置
    • 最高权限: db-creds.inc 文件中配置的用户名为 root,密码为 root,数据库名为 security。
      • 表明该用户具有对整个服务器的数据访问和操作权限。
3)实验总结
  • 总结一: 通过SQL注入实验,理解了SQL注入的基本原理及利用方法。
  • 总结二: 认识到高权限数据库用户的风险,需加强安全防护措施。
  • 总结三: 实验环境搭建及源码分析过程,提升了实际操作能力。
5. 系统权限表
1)MySQL权限控制表
  • 权限验证过程: 先从user表中的Host, User, Password字段判断连接信息,存在则通过验证。之后按user, db, tables_priv, columns_priv顺序检查权限。
  • 权限表:
    • user表: 存放用户账户信息及全局级别权限。
    • db表: 存放数据库级别权限。
    • tables_priv表: 存放表级别权限。
    • columns_priv表: 存放列级别权限。
    • procs_priv表: 存放存储过程和函数级别权限。
2)MySQL权限级别
  • 全局性管理权限: 作用于整个MySQL实例级别。
  • 数据库级别权限: 作用于某个指定数据库或所有数据库上。
3)系统库释义
  • information_schema库:
    • 作用: 信息数据库,保存关于MySQL服务器所维护的所有其他数据库的信息。
    • 内容: 如数据库或表的名称,列的数据类型或访问权限等。
    • 用途: 在web渗透过程中有很大用途。
    • 重要表:
      • SCHEMATA表: 提供当前MySQL实例中所有数据库信息,相当于show databases的结果。
      • TABLES表: 提供数据库中表的信息,如table_name等。
6. 信息schema库
1)information_schema库介绍
  • 定义: information_schema库是MySQL中的信息数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息。
  • 内容: 包括数据库或表的名称、列的数据类型或访问权限等。
  • 用途: 在web渗透过程中用途很大,常被称为数据字典或系统目录。
2)MySQL权限表概述
  • 控制权限表: MySQL中存在4个控制权限表,分别为user表、db表、tables_priv表、columns_priv表。
  • 权限级别:
    • user表: 存放用户账户信息及全局级别(所有数据库)权限。
    • db表: 存放数据库级别的权限。
    • tables_priv表: 存放表级别的权限。
    • columns_priv表: 存放列级别的权限。
  • 权限验证顺序: 按user、db、tables_priv、columns_priv的顺序进行验证。
3)权限验证流程
  • 流程概述:
    • 身份认证: 先从user表中的Host、User、Password字段判断连接的IP、用户名、密码是否存在,存在则通过验证。
    • 权限分配:
      • 检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,不再检查db、tables_priv、columns_priv。
      • 如果user中权限为N,则到db表中检查此用户对应的具体数据库权限。
      • 如果db中权限为N,则检查tables_priv表中此数据库对应的具体表权限。
      • 依次类推,直到columns_priv表。
  • 权限表详解:
    • User表: 存放用户账户信息及全局级别权限。
    • Db表: 存放数据库级别权限。
    • Tables_priv表: 存放表级别权限。
    • Columns_priv表: 存放列级别权限。
  • 实例: 如用户test1登录MySQL服务器,服务器会依次在user表、db表、tables_priv表、columns_priv表中验证其权限。
7. MySQL系统库与用户权限
1)登录MySQL服务器
  • 登录方式: 使用cmd命令行工具,通过账号root和密码root进行本地登录,IP地址为127.0.0.1。
2)查看数据库与系统库
  • 查看数据库: 登录后使用show databases;命令查看所有数据库。
  • 系统库: 重点关注名为mysql的系统库,它存储了用户信息和访问权限等重要数据。
3)查看系统库中的表
  • 查看表: 使用use mysql;命令选择mysql系统库,然后通过show tables;命令查看该库中的所有表。
4)用户权限相关表
  • 权限表:
    • user表: 存储用户账号及其全局权限。
    • db表: 存储数据库级别的权限,决定哪些用户可以访问特定数据库。
    • tables_priv表: 存储表级别的权限,决定哪些用户可以访问特定表。
    • columns_priv表: 存储列级别的权限,决定哪些用户可以访问特定列。
5)查看当前用户权限
  • 查看权限: 使用SELECT user, host FROM mysql.user;命令查看当前所有用户及其主机信息。通过SELECT * FROM user WHERE user='root' AND host='localhost';命令查看特定用户的详细权限信息。
6)用户与权限管理
  • 创建用户: 使用CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';命令创建新用户。
  • 授权: 使用GRANT 权限 ON 数据库.表 TO '用户名'@'主机名' IDENTIFIED BY '密码';命令为用户授权。
  • 删除用户: 使用DROP USER '用户名'@'主机名';命令删除用户。
  • 权限级别:
    • 实例级别: 作用于整个MySQL实例。
    • 数据库级别: 作用于特定数据库或所有数据库。
    • 对象级别: 作用于特定数据库对象(如表、视图等)或所有数据库对象。
8. 权限的区别
1)数据库对象级别权限

  • 定义: 数据库对象级别的权限作用于指定的数据库对象(如表、视图等)或者所有的数据库对象。
  • 查看用户权限: 可以通过查询mysql.user表来查看用户的权限,例如使用命令select * from user where user='root' and host='localhost'\G;。
2)用户管理

  • 查看用户: 使用命令select user, host from mysql.user;可以查看MySQL服务器上的所有用户。
  • 创建用户: 可以通过CREATE USER命令或INSERT语句直接操作MySQL系统权限表来创建用户。
  • 授权: 使用GRANT命令为用户分配特定权限,例如grant select(id) on test.temp to 'test'@'localhost' identified by '123456';仅提供对id列的查询权限。
  • 提升权限: 使用GRANT ALL PRIVILEGES命令可以将普通用户提升为管理员。
  • 删除用户: 使用DROP USER命令可以删除用户。
3)root权限
  • 查看root权限: 通过查询mysql.user表,可以查看root用户的权限,例如使用命令select * from user where user='root' and host='localhost'\G;。
  • 权限范围: root权限是最高权限,意味着对整个服务器的控制权是最高的,可以进行任意数据、任意操作。
4)权限表
  • 权限表内容: 权限表中包含多个字段,如Select_priv、Insert_priv、Update_priv等,分别表示查询、插入、更新等权限。
  • 权限标识: 如果某个权限字段的值为Y,则表示该用户具有该权限。
5)高权限与低权限
  • 高权限: 如root权限,具有对所有数据库和对象的完全控制权。
  • 低权限: 普通用户可能仅具有对特定数据库或对象的有限权限,例如仅具有查询权限。
  • 权限管理: 通过合理分配权限,可以确保数据库的安全性和数据的完整性。
9. 创建用户
1)用户权限与创建方式
  • 用户权限级别
    • 全局性管理权限: 作用于整个MySQL实例级别。
    • 数据库级别权限: 作用于某个指定的数据库上或者所有的数据库上。
    • 数据库对象级别权限: 作用于指定的数据库对象上(如表、视图等)或者所有的数据库对象。
  • 系统权限表
    • User表: 存放用户账户信息及全局级别权限。
    • Db表: 存放数据库级别权限。
    • Tables_priv表: 存放表级别权限。
    • Columns_priv表: 存放列级别权限。
    • Procs_priv表: 存放存储过程和函数级别权限。
  • 创建用户的方式
    • 方式一: 执行CREATE USER/GRANT命令(推荐方式)。
      • 示例: CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
    • 方式二: 通过INSERT语句直接操作MySQL系统权限表。
2)用户创建与权限分配实例
  • 用户认证与权限验证流程
    • 认证流程:
      • 从User表中的Host, User, Password字段判断连接IP、用户名、密码是否存在。
      • 身份认证通过后,按User, Db, Tables_priv, Columns_priv顺序进行权限验证。
  • 创建用户实例
    • 创建用户:
      • 示例命令: CREATE USER 'test1'@'localhost' IDENTIFIED BY '12345';
    • 查看用户:
      • 命令: SELECT user, host FROM mysql.user;
      • 结果: 显示包括新创建用户test1在内的所有用户。
  • 新用户权限查看
    • 查看新用户权限:
      • 新创建的用户test1初始没有任何权限,所有权限字段均为N。
3)用户权限管理
  • 权限分配
    • 分配特定权限:
      • 示例: GRANT SELECT(id) ON test.temp TO test1@'localhost' IDENTIFIED BY '123456';
    • 分配所有权限:
      • 示例: GRANT ALL PRIVILEGES ON *.* TO 'test1'@'localhost' WITH GRANT OPTION;
  • 删除用户
    • 删除用户:
      • 示例命令: DROP USER 'finley'@'localhost';

此笔记涵盖了创建MySQL用户、用户权限级别、系统权限表、用户认证与权限验证流程、创建用户实例、新用户权限查看以及用户权限管理和删除用户等关键知识点,并提供了相应的命令示例和图解,便于复习和理解。

10. 普通用户登录
1)低权限用户登录演示
  • 用户登录: 使用用户名“test1”和密码“12345”登录MySQL数据库。
  • 登录结果: 成功登录,但只能访问自带的系统库,无法访问其他数据库。
  • 原因: 该用户权限较低,只被赋予了访问系统库的权利。
2)低权限用户与高权限用户的区别
  • 低权限用户: 只能访问系统库,无法访问或操作其他数据库。
  • 高权限用户: 如管理员用户,可以访问、操作和管理所有数据库。
  • 区别: 权限范围不同,低权限用户受限较多,高权限用户拥有更广泛的权限。
3)提升用户权限的方法
  • 方法: 通过管理员账户登录MySQL,然后修改低权限用户的权限,将其提升为高权限用户(如管理员)。
  • 步骤:
    1. 登录管理员账户(如root账户)。
    2. 使用相关命令修改用户权限。
    3. 保存更改并退出。
4)管理员账户登录演示(尝试)
  • 登录尝试: 尝试使用管理员账户(root)和密码登录MySQL数据库。
  • 注意: 此处为演示过程,实际登录时需要输入正确的密码。
5)登录过程中的小插曲
  • 情况: 在尝试登录管理员账户时,发现之前并未真正退出低权限用户账户。
  • 处理: 先退出低权限用户账户,再重新尝试登录管理员账户。
6)成功登录管理员账户
  • 结果: 经过调整,成功登录管理员账户,可以访问和管理所有数据库。
  • 后续操作: 可以根据需要对用户权限进行修改或管理。
11. 管理员登录
1)登录MySQL数据库
  • 登录命令: 使用命令mysql -uroot -proot -h 127.0.0.1登录MySQL数据库,其中-u后面跟用户名(这里是root),-p后面跟密码(这里也是root),-h后面跟主机地址(这里是本地地址127.0.0.1)。
  • 注意事项: 在命令行界面使用密码可能会不安全,因为密码可能会以明文形式出现在命令历史中。
2)登录后的MySQL监控界面
  • MySQL监控界面: 登录成功后,会进入MySQL监控界面,显示连接ID、服务器版本等信息。
  • 命令提示: 在MySQL监控界面中,命令以;或\g结尾,可以使用help:或\h获取帮助,使用\c清除当前输入语句。
3)查看数据库列表
  • 查看数据库命令: 正确的命令是show databases;,用于显示当前MySQL服务器上的所有数据库。
  • 错误示例: 图中显示了错误的命令show databsesl_,并提示了语法错误。正确的命令应该是show databases;。
  • 数据库列表: 执行正确的命令后,会显示数据库列表,如information_schema、challenges、mysql、performance_schema、security、sys等。
4)选择数据库
  • 选择数据库命令: 使用use <数据库名>;命令来选择要操作的数据库,例如use mysql;。
  • 目的: 选择数据库后,可以在该数据库中执行SQL语句,如查询、插入、更新、删除等操作。
  • 下一步操作: 选中数据库后,可以执行提高权限的SQL语句,例如将普通用户变成管理员。
5)提高权限的SQL语句
  • 操作目的: 把普通用户变成管理员,需要修改mysql库中的user表。
  • 示例语句: 具体的SQL语句根据实际需求而定,但通常会涉及到对user表的UPDATE操作,修改用户的权限字段。
  • 注意事项: 提高权限的操作需要谨慎进行,因为不当的操作可能会导致安全问题。在执行此类操作前,建议备份相关数据。
12. 提高权限
1)MySQL权限级别
  • 全局性管理权限: 作用于整个MySQL实例级别。
  • 数据库级别权限: 作用于某个指定的数据库上或者所有的数据库上。
  • 数据库对象级别权限: 作用于指定的数据库对象上(如表、视图等)或者所有的数据库对象。
2)授予权限的方法
  • 执行CREATE USER/GRANT命令(推荐方式):
    • 示例:CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
    • 示例:GRANT ALL PRIVILEGES ON *.* TO 'test1'@'localhost' WITH GRANT OPTION;
  • 通过INSERT语句直接操作MySQL系统权表: 这种方法较为底层,不推荐一般用户使用。
3)查看与修改用户权限
  • 查看用户对应权限:
    • 示例:select * from user where user='root' and host='localhost'\G;
    • 若所有权限都是Y,则表示该用户拥有所有权限。
  • 修改用户权限:
    • 通过GRANT命令增加权限。
    • 通过REVOKE命令减少权限(本次课程未直接提及,但为常用操作)。
4)实战演示:提高用户权限

  • 实战步骤:
    1. 执行GRANT ALL PRIVILEGES ON *.* TO 'test1'@'localhost' WITH GRANT OPTION;命令,授予test1用户所有权限。
    2. 执行select * from user where user='test1' and host='localhost'\G;命令,查看test1用户的权限,确认所有权限均已授予(由原本的N变为Y)。
5)权限提升后的效果
  • 效果展示:
    • 提升权限后,用户test1可以访问所有数据库,执行所有操作。
    • 示例:执行show databases;命令,可以看到所有数据库信息。
6)知识扩展:删除用户
  • 删除用户的方法:
    • 示例:DROP USER 'finley'@'localhost';
    • 注意:删除用户前需确保该用户不再需要,且删除操作不可逆。
7)小结
  • 重点回顾:
    • MySQL权限级别分为全局性管理权限、数据库级别权限和数据库对象级别权限。
    • 授予权限的推荐方法是执行CREATE USER/GRANT命令。
    • 可以通过查看系统表来确认用户的权限状态。
    • 实战演示了如何提高用户权限,并展示了权限提升后的效果。
    • 简要介绍了删除用户的方法作为知识扩展。
13. 删除用户
1)删除用户操作
  • 操作指令: 通过drop user语句删除用户,例如drop user finley@'localhost';。
2)查看数据库和用户
  • 查看数据库: 使用show databases;命令查看所有数据库。
  • 查看用户: 通过查询mysql.user表来查看用户信息,例如select user, host from user;。
3)创建新用户
  • 创建用户: 使用CREATE USER语句创建新用户,例如CREATE USER 'test2'@'localhost' IDENTIFIED BY '12345';。
4)权限分配
  • 分配权限: 使用GRANT语句给用户分配权限,例如grant select(id) on test.t1 to test2@'localhost';只给查询ID的权限。
5)用户权限验证流程
  • 验证流程:
    • 先从user表中的Host, User, Password字段判断连接信息是否存在。
    • 身份认证后,按user, db, tables_priv, columns_priv顺序进行权限验证。
    • 如果user表中权限为Y,则对所有数据库有权限;如果为N,则检查db表,再检查tables_priv表,以此类推。
6)高权限与低权限用户区别
  • 高权限用户: 拥有对所有数据库的访问和控制权限,甚至可以对服务器文件进行读写操作。
  • 低权限用户: 仅拥有对单个数据库或部分配置的权限,文件读写可能受限。
7)高权限注入风险
  • 风险说明: 如果网站连接数据库的用户具有root权限,一旦存在SQL注入漏洞,攻击者可能控制整个服务器及其上的所有数据库,造成严重后果。
  • 权限表: MySQL中有user表、db表、tables_priv表、columns_priv表控制权限。
  • 权限级别: 分为全局性管理权限、数据库级别权限、数据库对象级别权限。
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

高权限注入概念

高权限意味着对整个数据库的操作控制权

高权限与低权限的区别

🌟

数据库权限划分

最高权限为root,普通权限可自定义分配

root权限的具体操作权限

🌟🌟

多个网站共享服务器

不同网站的数据可能存储在同一服务器的不同数据库

共享服务器下的数据访问风险

🌟🌟🌟

高权限注入利用条件

网站存在注入漏洞且连接数据库的用户为root权限

漏洞利用的前提条件

🌟🌟🌟🌟

权限验证流程

从user表到db表、tables表、columns表依次验证

验证流程的顺序及含义

🌟🌟🌟

权限提升操作

可通过修改user表提升普通用户权限

提升权限的具体SQL语句

🌟🌟🌟🌟

权限控制表

my系统库中的user、db、tables、columns表

各表的作用及权限级别

🌟🌟

实际操作演示

创建、删除用户及分配特定权限的操作示例

操作示例的理解与应用

🌟🌟🌟🌟

一、高权限注入
1. 查看当前服务器所有的数据库
  • 目的: 了解当前服务器上有哪些数据库。
  • 方法: 使用SQL注入,通过联合查询从information_schema.schemata表中获取所有数据库的名称。
  • 社会语句: SELECT * FROM users WHERE id=-2 union select 1,group_concat(schema_name),3 from information_schema.schemata LIMIT 0,1
  • 结果: 返回当前服务器上的所有数据库名称,如information_schema, challenges, mysql, performance_schema, security, sys, test。
2. 查询数据库对应的表名
  • 目的: 获取特定数据库下的所有表名。
  • 方法: 使用SQL注入,通过联合查询从information_schema.tables表中获取指定数据库下的所有表名。
  • 社会语句: SELECT * FROM users WHERE id=-2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='test' LIMIT 0,1
  • 注意: 数据库名需使用16进制编码,如test对应0x74657374。
  • 结果: 返回指定数据库下的所有表名,如t1。
3. 查询表名对应的字段名
  • 目的: 获取特定表下的所有字段名。
  • 方法: 使用SQL注入,通过联合查询从information_schema.columns表中获取指定表下的所有字段名。
  • 社会语句: SELECT * FROM users WHERE id=-2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7431 LIMIT 0,1
  • 注意: 表名需使用16进制编码,如t1对应0x7431。
  • 结果: 返回指定表下的所有字段名,如id, name, pass。
4. 查询数据
  • 目的: 获取特定表中的数据。
  • 方法: 使用SQL注入,通过联合查询从指定表中获取数据。
  • 社会语句: SELECT * FROM users WHERE id=-2 union select 1,name,pass from test.t1 LIMIT 0,1
  • 结果: 返回指定表中的数据,如name=abc, pass=22。
5. 高权限注入的两个要求
  • 要求一: 用户权限必须是root。
  • 要求二: 必须在高版本的MySQL服务器下进行,因为低版本可能不支持通过系统库查询。
6. 系统库补充
  • 系统库: information_schema是MySQL中的系统库,用于存储数据库元数据。
  • 高低版本差异: 高版本MySQL支持通过information_schema查询数据库、表、字段等信息,低版本(如5.0以下)则不支持。
7. 高权限注入的概念
  • 概念: 高权限注入是指利用高权限账户(如root)进行的SQL注入攻击,能够跨库查询数据,甚至进行文件读写操作。
  • 危害: 高权限注入不仅能获取多个数据库的数据,还能对服务器文件进行读写,造成更严重的安全威胁。
8. 结束
  • 总结: 高权限注入是一种危险的攻击方式,需要严格防范。同时,了解高权限注入的原理和方法,有助于更好地进行安全防护。
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

高权限注入概念

了解社会注入高权限的相关概念,包括权限介绍

高权限定义及权限介绍

🌟

注入流程回顾

1. 判断注入点;2. 拆解数据库字段数量;3. 使用联合查询进行注入

注入流程的每一步操作及目的

🌟🌟

高权限注入前提条件

当前连接数据库的用户权限必须是root

root权限的重要性及如何确认

🌟🌟🌟

查询数据库名称

使用联合查询,从information_schema.schemata中查询schema_name

查询语句的构造及执行

🌟🌟🌟

查询表名

从information_schema.tables中查询table_name,需指定数据库名

指定数据库名的重要性及查询方法

🌟🌟🌟

查询字段名

从information_schema.columns中查询column_name,需指定数据库和表名

指定数据库和表名的重要性及查询方法

🌟🌟🌟

跨库查询

利用高权限进行跨库查询,获取其他数据库的数据

跨库查询的实现及风险

🌟🌟🌟🌟

高权限注入要求

1. 用户权限必须是root;2. 必须在高版本的MySQL服务器下

两个要求的必要性及影响

🌟🌟🌟

高权限读写操作

利用高权限进行信息的读写操作,如读取服务器文件或写入后门

读写操作的可能性及风险

🌟🌟🌟🌟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值