1. 程式人生 > >PHP程式碼審計之命令執行

PHP程式碼審計之命令執行

成功執行.

在具體分析細節之前,先說一下create_function()。

create_function返回一個字串的函式名, 這個函式名的格式是:

"\000_lambda_" . count(anonymous_functions)++   

我們來看看create_function的實現步驟:

1. 獲取引數, 函式體;

2. 拼湊一個"function __lambda_func (引數) { 函式體;} "的字串;

3. eval;

4. 通過__lambda_func在函式表中找到eval後得到的函式體, 找不到就出錯;

5. 定義一個函式名:"\000_lambda_" . count(anonymous_functions)++;

6. 用新的函式名替換__lambda_func;

7. 返回新的函式。

實際上,create_functions是一個ZEND_FUNCTION,它被定義在./Zend/zend_builtin_functions.c中。