ããPHPæ§è¡ç³»ç»å½ä»¤ï¼ç®ä»åæ¹æ³ï¼
ããå¨PHPä¸è°ç¨å¤é¨å½ä»¤ï¼å¯ä»¥ç¨å¦ä¸ä¸ç§æ¹æ³æ¥å®ç°ï¼
ããæ¹æ³ä¸ï¼ç¨PHPæä¾çä¸é¨å½æ°ï¼å个ï¼ï¼
ããPHPæä¾4个ä¸é¨çæ§è¡å¤é¨å½ä»¤çå½æ°ï¼exec(), system(), passthru(), shell_exec()
ãã1ï¼exec()
ããåå: string exec ( string $command [, array &$output [, int &$return_var ]] )
ãã说æ: execæ§è¡ç³»ç»å¤é¨å½ä»¤æ¶ä¸ä¼è¾åºç»æï¼èæ¯è¿åç»æçæåä¸è¡ãå¦ææ³å¾å°ç»æï¼å¯ä»¥ä½¿ç¨ç¬¬äºä¸ªåæ°ï¼è®©å
¶è¾åºå°æå®çæ°ç»ãæ¤æ°ç»ä¸ä¸ªè®°å½ä»£è¡¨è¾åºçä¸è¡ãå³å¦æè¾åºç»ææ20è¡ï¼åè¿ä¸ªæ°ç»å°±æ20æ¡è®°å½ï¼æ以å¦æéè¦åå¤è¾åºè°ç¨ä¸åç³»ç»å¤é¨å½ä»¤çç»æï¼æ好å¨è¾åºæ¯ä¸æ¡ç³»ç»å¤é¨å½ä»¤ç»ææ¶æ¸
空è¿ä¸ªæ°ç»unset($output)ï¼ä»¥é²æ··ä¹±ã第ä¸ä¸ªåæ°ç¨æ¥åå¾å½ä»¤æ§è¡çç¶æç ï¼é常æ§è¡æåé½æ¯è¿å0ã
ãã<?php
ããexec("dir",$output);
ããprint_r($output);
ãã?>
ãã2ï¼system()
ããåå: string system ( string $command [, int &$return_var ] )
ãã说æ: systemåexecçåºå«å¨äºï¼systemå¨æ§è¡ç³»ç»å¤é¨å½ä»¤æ¶ï¼ç´æ¥å°ç»æè¾åºå°æ¸¸è§å¨ï¼å¦ææ§è¡å½ä»¤æååè¿åtrueï¼å¦åè¿åfalseã第äºä¸ªåæ°ä¸exec第ä¸ä¸ªåæ°å«ä¹ä¸æ ·ã
ãã<?php
ããsystem("pwd");
ãã?>
ãã3ï¼passthru()
ããåå: void passthru ( string $command [, int &$return_var ] )
ãã说æ: passthruä¸systemçåºå«ï¼passthruç´æ¥å°ç»æè¾åºå°æ¸¸è§å¨ï¼ä¸è¿åä»»ä½å¼ï¼ä¸å
¶å¯ä»¥è¾åºäºè¿å¶ï¼æ¯å¦å¾åæ°æ®ã第äºä¸ªåæ°å¯éï¼æ¯ç¶æç ã
ãã<?php
ããheader("Content-type:image/gif");
ããpassthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
ãã?>
ãã4ï¼shell_exec()
ããåå: string shell_exec ( string $cmd )
ãã说æ: ç´æ¥æ§è¡å½ä»¤$cmd
ãã<?php
ãã$output = shell_exec('ls -lart');
ããecho "<pre>$output</pre>";
ãã?>
ããæ¹æ³äºï¼åæå·
ããåå: åæå·`ï¼å~å¨åä¸ä¸ªé®ï¼æ§è¡ç³»ç»å¤é¨å½ä»¤
ãã说æ: å¨ä½¿ç¨è¿ç§æ¹æ³æ§è¡ç³»ç»å¤é¨å½ä»¤æ¶ï¼è¦ç¡®ä¿shell_execå½æ°å¯ç¨ï¼å¦åæ¯æ æ³ä½¿ç¨è¿ç§åæå·æ§è¡ç³»ç»å¤é¨å½ä»¤çã
ãã<?php
ããecho `dir`;
ãã?>
ããæ¹æ³ä¸ï¼ç¨popen()å½æ°æå¼è¿ç¨
ããåå: resource popen ( string $command , string $mode )
ãã说æ: è½å¤åå½ä»¤è¿è¡äº¤äºãä¹åä»ç»çæ¹æ³åªè½ç®åå°æ§è¡å½ä»¤ï¼å´ä¸è½ä¸å½ä»¤äº¤äºãææ¶é¡»åå½ä»¤è¾å
¥ä¸äºä¸è¥¿ï¼å¦å¨å¢å ç³»ç»ç¨æ·æ¶ï¼è¦è°ç¨suæ¥æå½åç¨æ·æ¢å°rootç¨æ·ï¼èsuå½ä»¤å¿
é¡»è¦å¨å½ä»¤è¡ä¸è¾å
¥rootçå¯ç ãè¿ç§æ
åµä¸ï¼ç¨ä¹åæå°çæ¹æ³æ¾ç¶æ¯ä¸è¡çã
ããpopen( )å½æ°æå¼ä¸ä¸ªè¿ç¨ç®¡éæ¥æ§è¡ç»å®çå½ä»¤ï¼è¿åä¸ä¸ªæ件å¥æï¼å¯ä»¥å¯¹å®è¯»ååãè¿åå¼åfopen()å½æ°ä¸æ ·ï¼è¿åä¸ä¸ªæ件æéãé¤é使ç¨çæ¯åä¸ç模å¼æå¼(读orå)ï¼å¦åå¿
须使ç¨pclose()å½æ°å
³éã该æéå¯ä»¥è¢«fgets(),fgetss(),fwrite()è°ç¨ãåºéæ¶ï¼è¿åFALSEã
ãã<?php
ããerror_reporting(E_ALL);
ãã/* Add redirection so we can get stderr. */
ãã$handle = popen('/path/to/executable 2>&1', 'r');
ããecho "'$handle'; " . gettype($handle) . "\n";
ãã$read = fread($handle, 2096);
ããecho $read;
ããpclose($handle);
ãã?>
ããè¦èè两个é®é¢ï¼å®å
¨æ§åè¶
æ¶
ãã1ï¼å®å
¨æ§
ããç±äºPHPåºæ¬æ¯ç¨äºWEBç¨åºå¼åçï¼æ以å®å
¨æ§æäºäººä»¬èèçä¸ä¸ªéè¦æ¹é¢ ãäºæ¯PHPç设计è
们ç»PHPå äºä¸ä¸ªé¨ï¼å®å
¨æ¨¡å¼ãå¦æè¿è¡å¨å®å
¨æ¨¡å¼ä¸ï¼é£ä¹PHPèæ¬ä¸å°å å°å¦ä¸å个æ¹é¢çéå¶ï¼
ããæ§è¡å¤é¨å½ä»¤
ããå¨æå¼æ件æ¶æäºéå¶
ããè¿æ¥MySQLæ°æ®åº
ããåºäºHTTPç认è¯
ããå¨å®å
¨æ¨¡å¼ä¸ï¼åªæå¨ç¹å®ç®å½ä¸çå¤é¨ç¨åºæå¯ä»¥è¢«æ§è¡ï¼å¯¹å
¶å®ç¨åºçè°ç¨å°è¢«æç»ãè¿ä¸ªç®å½å¯ä»¥å¨PhP.ini æ件ä¸ç¨safe_mode_exec_diræ令ï¼æå¨ç¼è¯PHPæ¯å ä¸--with-exec-diré项æ¥æå®ã
ããå½ä½ 使ç¨è¿äºå½æ°æ¥æ§è¡ç³»ç»å½ä»¤æ¶ï¼å¯ä»¥ä½¿ç¨escapeshellcmd()åescapeshellarg()å½æ°é»æ¢ç¨æ·æ¶æå¨ç³»ç»ä¸æ§è¡å½ä»¤ï¼escapeshellcmd()é对çæ¯æ§è¡çç³»ç»å½ä»¤ï¼èescapeshellarg()é对çæ¯æ§è¡ç³»ç»å½ä»¤çåæ°ãè¿ä¸¤ä¸ªåæ°æç¹ç±»ä¼¼addslashes()çåè½ã
ãã2ï¼è¶
æ¶
ããå½æ§è¡å½ä»¤çè¿åç»æé常åºå¤§æ¶ï¼å¯ä»¥éè¦èèå°è¿åç»æè¾åºè³å
¶ä»æ件ï¼åå¦è¡è¯»åæ件ï¼è¿æ ·å¯ä»¥æ¾èæé«ç¨åºæ§è¡çæçã
ããå¦æè¦æ§è¡çå½ä»¤è¦è±è´¹å¾é¿çæ¶é´ï¼é£ä¹åºè¯¥æè¿ä¸ªå½ä»¤æ¾å°ç³»ç»çåå°å»è¿è¡ãä½å¨é»è®¤æ
åµä¸ï¼è±¡system()çå½æ°è¦çå°è¿ä¸ªå½ä»¤è¿è¡å®æè¿åï¼å®é
ä¸æ¯å¨çå½ä»¤çè¾åºç»æï¼ï¼è¿è¯å®ä¼å¼èµ·PHPèæ¬çè¶
æ¶ã解å³çåæ³æ¯æå½ä»¤çè¾åºéå®åå°å¦å¤ä¸ä¸ªæ件ææµä¸ï¼å¦ï¼
ãã<?php
ããsystem("/usr/local/bin/order_proc > /tmp/abc ");
ãã?>
ããä½æè°ç¨çDOSå½ä»¤éè¦å åéçæ¶é´ï¼èä¸ä¸ºäºæ¹å¤çä¸è½ç®åçæç»æåå
¥æ件äºäºï¼è¦é¡ºåºæ§è¡ä»¥ä¸çç¨åº
ããPHP设置äºè°ç¨ç³»ç»å½ä»¤çæ¶é´éå¶ï¼å¦æè°ç¨å½ä»¤è¶
æ¶ï¼è½ç¶è¿ä¸ªå½ä»¤è¿æ¯ä¼è¢«æ§è¡å®ï¼ä½PHP没æå¾å°è¿åå¼ï¼è¢«ç»æ¢äºï¼æå¯æ¨çæ¯ï¼ä¸æ¾ç¤ºä»»ä½é误ï¼
ããä¿®æ¹php.ini并éå¯Apache以å
许系ç»å½ä»¤è¿è¡æ´é¿çæ¶é´
ããmax_execution_time = 600
ããæçç¨åºæ¯åå°è¿è¡çï¼é»è¾OKå°±æäº
温馨提示:内容为网友见解,仅供参考