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`;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299479.html
標籤:其他
上一篇:SQL注入專題
