mysql越權 MYSQL儲存過程的越權執行

2021-10-18 12:02:56 字數 1543 閱讀 4028

老早就有人提出來過了, 不是什麼新技術,寫在這裡當備忘而已。沒做過多的測試,有些東西也是按我自己的理解說的,有錯誤請指出。

若使用比如

use test;

delimiter //

create procedure readf(f varchar(100))

begin

select load_file(f);

end //

delimiter ;

然後使用乙個沒有file許可權但是有擁有:

call test.readf('c:\\boot.ini')

可以發現檔案照樣被讀出來了。。

利用drop procedure readf;

來刪除這個儲存過程

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

use test;

delimiter //

create procedure whoami()

begin

select concat('user():',user()) as 'whoami' union select concat('current_user():',current_user());

end //

delimiter ;

以結果是:

| whoami                                          |

| user():root@localhost                  |

| current_user():root@localhost  |

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

| whoami                                         |

| user():ninty@localhost               |

| current_user():root@localhost |

ps:可以通過show grants來看看自己是否有

檢視1.

select * from mysql.proc -- (mysql中的函式就儲存在mysql.func表裡面)預設只有root使用者才可以查詢。

2.select routine_schema,routine_name,definer,routine_definition from information_schema.routines; --誰都可以查

3.show procedure status --這個只有當當前賬號有execute許可權的時候,才能夠列出儲存過程。如果擁有全域性的execute許可權,就可以看到所有的儲存過程,如果只擁有當前庫的execute許可權,就只能看到當前庫裡面的儲存過程。

sql server 05得到使用者自定義儲存過程:

select [name] from sys.all_objects where [type]='p' and charindex('sp',[name])<>1 and charindex('xp',[name])<>1

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

MYSQL儲存過程的越權執行

若使用root 使用者來建立乙個儲存過程 然後賦予另乙個使用者此儲存過程的執行許可權,則此使用者將可以進行一些root 賬號才可以進行的操作。但是這些操作是預先被定義在儲存過程裡面的。比如root 在test 資料庫建立了乙個讀取檔案的儲存過程readf 1 2 3 4 5 6 7 use test...

mysql 分號 儲存過程 Mysql之儲存過程

1.進入到資料庫中檢視 是否有相關的儲存過程資料 show procedure status where db test 2.建立簡單的儲存過程 create procedure hi select hello 3.呼叫儲存過程 call hi 事例 三 mysql 儲存過程特點 建立 mysql ...

mysql怎麼建儲存過程 mysql儲存過程怎麼寫

mysql 儲存過程是一些 sql 語句的集合,比如有的時候我們可能需要一大串的 sql 語句,或者說在編寫 sql 語句的過程中還需要設定一些變數的值,這個時候我們就完全有必要編寫乙個儲存過程。下面我們來介紹一下如何建立乙個儲存過程。語法格式 可以使用 create procedure 語句建立儲...