首页后端开发PHPPHP中常见的执行系统命令有哪些,如何使用?

PHP中常见的执行系统命令有哪些,如何使用?

时间2024-03-26 03:12:03发布访客分类PHP浏览1203
导读:这篇文章给大家分享的是PHP中常见的执行系统命令及使用。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。命令注入 命令注入(Command Injection),对一些函数的参数没...

这篇文章给大家分享的是PHP中常见的执行系统命令及使用。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。

命令注入

命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。

常见的执行系统命令的函数有

  • system()
  • passthru()
  • exec()
  • shell_exec()
  • popen()
  • proc_open()
  • pcntl_exec()

system()函数

string system ( string $command [, int & $return_var ] )

$command为执行的命令,& return_var可选,用来存放命令执行后的状态码

system()函数执行有回显,将执行结果输出到页面上

?php	system("whoami");
    ?>
    

passthru()函数

void passthru ( string $command [, int & $return_var ] )

和system函数类似,$command为执行的命令,& return_var可选,用来存放命令执行后的状态码

执行有回显,将执行结果输出到页面上

?php	passthru("whoami");
    ?>
    

exec()函数

string exec ( string $command [, array & $output [, int & $return_var ]] )

$command是要执行的命令

$output是获得执行命令输出的每一行字符串,$return_var用来保存命令执行的状态码(检测成功或失败)

exec()函数执行无回显,默认返回最后一行结果

?php	echo exec("whoami");
    ?>
    
?php 
$test = "ipconfig";
    
exec($test,$array);
    
print_r($array);
    
?>
    

shell_exec()函数

string shell_exec( string & command)

& command是要执行的命令

shell_exec()函数默认无回显,通过echo可将执行结果输出到页面

?php	echo shell_exec("whoami");
    ?>
    

反引号 `

shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体,当禁用shell_exec时,`也不可执行

在php中称之为执行运算符,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回

?php	echo `whoami`;
    ?>
    

popen()函数

resource popen ( string $command , string $mode )

函数需要两个参数,一个是执行的命令command,另外一个是指针文件的连接模式mode,有rw代表读和写。

函数不会直接返回执行结果,而是返回一个文件指针,但是命令已经执行。

popen()打开一个指向进程的管道,该进程由派生给定的command命令执行而产生。

返回一个和fopen()所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用pclose()来关闭。

此指针可以用于fgets()fgetss()fwrite()

?php popen( 'whoami >
    >
     c:/1.txt', 'r' );
     ?>
    
?php
$test="ls/tmp/test";
    
$fp=popen($test,"r");

//popen打一个进程通道
while(!feof($fp)) {
    
//从通道里面取得东西
$out=fgets($fp,4096);
    
echo$out;

//打印出来}
    pclose($fp);
    ?>
    

proc_open()函数

resource proc_open (string $cmd ,array $descriptorspec ,array & $pipes [, string $cwd [, array $env [, array $other_options ]]])

与Popen函数类似,但是可以提供双向管道

?php
$test="ipconfig";
    
$array=array(array("pipe","r"),//标准输入
array("pipe","w"),//标准输出内容
array("pipe","w")//标准输出错误
);
    
$fp=proc_open($test,$array,$pipes);
    //打开一个进程通道
echostream_get_contents($pipes[1]);
    //为什么是$pipes[1],因为1是输出内容proc_close($fp);
    

?>
    

pcntl_exec()函数

void pcntl_exec ( string $path [, array $args [, array $envs ]] )

path是可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本
args是一个要传递给程序的参数的字符串数组。

pcntllinux下的一个扩展,需要额外安装,可以支持 php 的多线程操作。

pcntl_exec函数的作用是在当前进程空间执行指定程序,版本要求:PHP > 4.2.0

?php
pcntl_exec( "/bin/bash" , array("whoami"));
    
?>
    

对这些危险函数,可以在php.ini中禁用,进行安全加固

以上就是关于PHP中常见的执行系统命令及使用的介绍,现在大家对这些常见的执行系统命令应该都有一定的了解了吧,上述示例具有一定的借鉴价值,有需要的朋友可以参考学习,希望对大家学习PHP有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP中常见的执行系统命令有哪些,如何使用?
本文地址: https://pptw.com/jishu/653221.html
Go语言中删除元素的方法是什么 JavaScript正则表达式是什么,如何掌握和使用

游客 回复需填写必要信息