PHP代碼執行函數

危險函數

mixed eval (string $code)  把字符串做爲PHP代碼執行
    
    bool assert (mixed $assertion [,string $description]) 替代eval函數。相同功能。
    
    mixed preg_replace(mixed $pattern,mixed $replacement,mixed $subject[,int $limit=-1 [,int&$count]])
            /e修正符使preg_replace()將replacement參數看成PHP代碼
            preg_replace("/test/e",$_GET["V"],"jutst test");
            提交?h=phpinfo(),phpinfo()將會被執行
            
    string create_function(string $args,string $code)
            建立一個匿名函數,並返回獨一無二的函數名
            $newfunc = create_funciton('$v','return system($v);')
            $newfunc('whoami');就至關於system('whoami')
    call_user_func(callable $callback [,mixed $parameter [,mixed $....]])
            第一個參數callback 是被調用的回調函數,其他參數是回調函數的參數
            function test($var){echo "callable test $var";}
            call_user_func('system','whoami')
    
    call_user_func_array(callable $callback,array $param_arr)
            把第一個參數做爲回調函數(callback)調用,把參數數組做(param_arr)爲回調函數的參數傳入
複製代碼

包含函數

include $file;
            變量$file 可控的狀況下咱們就能夠包含任意文件。從而getshell目的
            另外再不一樣的配置環境,能夠包含不一樣的文件,所以分爲遠程文件包含和本地文件包含。
            包含函數能夠讀取任意文件內容,這就須要用到【支持的協議和封裝的協議】以及【過濾器】
            include($_GET['file']);
            ?file=php://file/convert.base64-encode/resource=index.php
            file是協議    convert.base64-encode 是過濾器
include_once


require


require_once
複製代碼

命令執行函數

exec():執行一個外部程序
    passthru():執行外部程序而且顯示原始輸出
    
    proc_open() :執行一個命令,而且打開用來輸入/輸出的文件指針
    shell_exec():經過shell環境,而且將完整的輸出以字符串方式返回
    system():執行外部程序,而且返回輸出
    popen():經過popen()參數傳遞一條命令,並對popen()所打開的文件進行執行。
複製代碼

文件操做函數

copy : 拷貝文件
    file_get_contents:將整個文件讀入爲一個字符串
    file_put_contents:將字符串寫入文件
    file:把整個文件讀入一個數組中
    fopen:打開文件或者url
    move_uploaded_file:將上傳的文件移動到新位置
    readfile:輸出文件
    rename:重命名一個文件或目錄
    rmdir:刪除目錄
    unlink&delete :刪除文件
複製代碼

特殊函數

信息泄露
    bool phpinfo([int $what = INFO_ALL]):輸出php當前狀態的大量信息包含啓用的擴展php版本服務器信息
    軟連接-讀取文件內容(liunx)
    bool symlink(string $target ,string $link)
            symlink()對於已有的target 創建一個名爲link的符號連接
    string readlink(string $path)
            readlink()和同名的C函數作一樣的事情,返回符號鏈接的內容
    環境變量
    string getenv(string $varname)
            獲取一個環境變量的值
    bool putenv(string $setting)
            添加setting 到服務器環境變量。環境變量僅存活與當前請求期間,再請求結束時恢復初始狀態
    加載擴展
    bool dl(string $library)
            載入指定參數library的php擴展
    配置相關
    string ini_get():成功時返回配置選項的值
    
    string ini_set():設置指定配置選項的值,這個選項會在腳本運行時保持新的值,而且腳本結束恢復
    
    string ini_alter:同上
    
    string ini_restore:恢復指定配置選項到它的原始值
    
    數字判斷
    
    bool is_numeric(mixed $var)
            若是var時數字和數字字符串則返回TRUE,不然返回FALSE
            *僅用is_numeric判斷而不用intval轉換有可能插入16進制字符串到數據庫,進而可能致使sql二次注入
    
    數組相關
    bool in_array($needle,array $haystack[,bool $strict=FALSE]):該函數比較會自動進行類型轉換
            $a='1abc'
            inarray($a,array(1,2,3))返回爲真
複製代碼
相關文章
相關標籤/搜索