對於can't open shared library 'udf.dll'相信很多使用mysql提權的朋友應該都不會感到陌生吧,明明是root用戶 但是在使用udf.dll提權創建自定義函數時卻提示這樣的錯誤,以前遇到這種情況一般都會放棄。
經過測試發現appserv搭建php環境能利用udf.dll提權 5.037
apache+php+mysql+phpmyadmin搭建的php環境不能利用 5.1
為什麼兩個系統一個能利用一個不能利用呢?原因很簡單 因為 5.1版本開始必須把udf.dll文件放到mysql安裝目錄下的lib/blugin文件下才能創建自定義函數,並且該目錄默認是沒有的,而mysql into dumpfile在導出文件時也不能創建文件夾,原來mysql從5.1版本開始在把udf.dll導入到系統目錄下已經不能創建自定義函數了,而一般我們都是把udf.dll導入到系統目錄,自然也就不能創建自定義函數了,導致了不能提權。能夠提權的系統中的mysql版本為5.0.37,不能提權的系統中的mysql的版本為5.1正好符合上面說法。
在不能利用的系統(5.037)中執行create function mycmd return string soname 'udf.dll' 時提示can't open shared library 'udf.dll' 的錯誤提示,說明導出到系統目錄不能創建自定義函數,我們來把udf.dll導入到mysql安裝目錄下的lib/blugin目錄中,我已經知道了mysql的安裝目錄為:"c:\program files\mysql\mysql server 5.1"在這個目錄下目前還沒有lin/plugin這個目錄,我們通過webshell在mysql安裝目錄下創建lib文件夾然後再lib文件夾中創建plugin文件夾
在udf.php中dll導出路徑就寫"c:\program files\mysql\mysql server 5.1\lib\plugin\udf.dll"。這時候就可以執行 如select mycmd("net user");的sql命令來執行聰明的了。。。
通過在mysql安裝目錄下創建lib/plugin目錄,然後再把udf.dll文件導出到該目錄下,是在mysql 5.1以及更高版本中解決"can't open shared library 'udf.dll'"錯誤的一種辦法。。。。