本篇文章給大家帶來了關于PHP的相關知識,其中主要介紹了關于PHP中一些常見的命令執行函數,利用命令執行函數執行操作系統命令,下面一起來看一下,希望對大家有幫助。
PHP命令執行函數常配合代碼執行漏洞使用, 利用命令執行函數執行操作系統命令, 從而發起攻擊, 接下來就簡單分享幾個常用的PHP命令執行函數
system();
system()函數可以執行系統命令, 并將命令執行的結果直接輸出到界面中, 使用時直接在參數中傳入需要執行的命令即可
system('ls');
exec();
exec()函數可以執行系統命令, 但它不會直接輸出結果, 而是將執行的結果保存到數組中
exec( 'ls' , $result );
參數1: 字符串類型,需要執行的系統命令
參數2: 數組類型,保存系統命令的執行結果
print_r($result); //輸出執行結果
shell_exec();
shell_exec()函數可以執行系統命令, 但它不會直接輸出執行的結果, 而是返回一個字符串類型的變量來存儲系統命令的執行結果, 在參數中傳遞需要執行的系統命令即可
echo shell_exec('ls');
passthru();
passthru()函數可以執行系統命令, 并將執行結果輸出到頁面中, 與system()函數不同的是, 它支持二進制的數據, 更多的用于文件, 圖片等操作, 使用時直接在參數中傳遞字符串類型的系統命令即可
passthru('ls');
popen();
popen()函數可以執行系統命令, 但不會輸出執行的結果, 而是返回一個資源類型的變量用來存儲系統命令的執行結果, 需要配合fread()函數來讀取命令的執行結果
$result = popen( 'ls' , 'r' );
參數1:字符串類型,需要執行的命令
參數2:字符串類型,模式
返回值:資源類型,命令執行的結果
echo fread( $result , 100 );
參數1:資源類型,需要讀取的文件指針
參數2:int類型,讀取n個字節
返回值:字符串類型,讀取的文件內容
echo fread(popen('ls','r'),100);
反引號``
反引號可以執行系統命令, 但它不會輸出結果, 而是返回一個字符串類型的變量, 用來存儲系統命令的執行結果, 可單獨使用, 也可配合其他命令執行函數使用來繞過參數中的過濾條件
echo `ls`;