程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MYSQL存儲過程的越權執行

MYSQL存儲過程的越權執行

編輯:MYSQL入門知識
 

若使用ROOT用戶來創建一個存儲過程 ,然後賦予另一個用戶此存儲過程的執行權限,則此用戶將可以進行一些ROOT賬號才可以進行的操作。但是這些操作是預先被定義在存儲過程裡面的。

比如ROOT在test數據庫創建了一個讀取文件的存儲過程readf:

 

 

然後使用一個沒有FILE權限但是有EXECUTE權限的賬號來調用這個存儲過程,擁有EXECUTE權限才可以調用存儲過程:

 

 

可以發現文件照樣被讀出來了。。

利用

 

 

來刪除這個存儲過程

下面這段代碼也許可以說明一些什麼:

 

 

以ROOT身份創建這個存儲過程 ,再以ROOT身份來執行

結果是:

+——————————————+
| whoami |
+——————————————+
| user():root@localhost |
| current_user():root@localhost |
+——————————————+

再以ninty賬號來執行這個存儲過程:

+—————————————–+
| whoami |
+—————————————–+
| user():ninty@localhost |
| current_user():root@localhost |
+—————————————–+

PS:

可以通過show grants來看看自己是否有EXECUTE的權限

查看MYSQL中存儲過程的方法:

1.

 

 

2.

 

 

3.

 

 

SQL SERVER 05得到用戶自定義存儲過程:
 

 

 

或者可以查詢sys.procedures,不過聽人說好像因為一些未知的原因,從這裡查出的數據並不全
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved