MySQL数据库文件读写权限要求:
确保具备文件导入导出权限后即可进行文件读写操作~~~ 读写文件:数据库表读取文件中的内容并保存~ load_file:load_file(<[./url/]file>);
create table file( id int not null auto_increment primary key, file_url text )engine=innodb default charset=utf8; -- 创建表file insert into file(file_url) values (load_file('/var/lib/mysql-files/user.txt')); mysql> select * from file; +----+---------------+ | id | file_url | +----+---------------+ | 1 | NULL | | 2 | Hello,World! | +----+---------------+ 2 rows in set (0.00 sec) 文件中的数据内容就这样写入了数据表中! load data infile:load data infile '/var/lib/mysql-files/name.txt' into table file(file_url); mysql> mysql> select * from file; +----+---------------+ | id | file_url | +----+---------------+ | 1 | NULL | | 2 | Hello,World! | | 3 | Hello,World! | +----+---------------+ 3 rows in set (0.00 sec) 注入利用:我们可以通过前期的渗透手段和分析得知目标网站某处存在SQL注入漏洞;于是我们就可以利用SQL的文件读取的特性来读取目标系统中的某个文件的内容 MySQL数据库系统表MySQL在刚刚初始化后,默认有三个系统默认库: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec) 这些事MySQL数据库自带的三个基本的系统库
information_schema库:information_schema 库通常保存由数据库的元数据: 数据库名,表名,列的属性、类型、访问权限等等…… 在 SCHEMATA表:库信息提供了当前MySQL所有库的信息, tables表:表信息
select <列名> from information_schema.tables; table表中主要记录了数据库中所有表的元数据,例如表名、类型、引擎…… 在渗透过程中,如果我们掌握到这张表就可以掌握数据库的大概的表 COLUMNS表:字段信息
select COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT from information_schema.COLUMNS where table_name = 'user'; 查询user表中的字段名信息 STATISTICS表:索引信息
TRIGGERS表:触发器信息VIEWS表:视图信息USER_PRIVLEGES表:用户权限表信息源自于 SCHEMA_PRIVLEGES表:方案(库)权限表信息源自于 TABLE_PRIVLEGES表:表权限表信息源自于 COLUMNS_PRIVLEGES表:列权限表信息源自于 CHARCTER_SETS表:字符集表提供mysql所有相关的字符集信息 使用系统表注入*在SQL注入中union联合注入是最为常见的 普遍的情况下,使用 ' union <SQL语句>; # 现在简单的举例几条SQL语句实现核心的条件查询 MySQL注入查询SQL:查当前 库名:select 1 , database(); 查库 SQL语句:select schema_nam from information_schema.schemata; 查表 SQL语句:select table_name from information_schema.tables where table_schema = "<databases_name>"; 查列(字段) SQL语句:select columns_name from information_schema.columns where table_name = "<tables_name>"; 顺带一提~SQL盲注 上面说的SQL注入是基于页面有“回显”的注入(回显注入) 如果页面没有回显,那么就需要进行“盲注入” hash破解*获取管理员hash:select user,password from mysql.user; |
|