常用的PHP命令执行函数及利用方式

Posted 士别三日wyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的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`;

以上是关于常用的PHP命令执行函数及利用方式的主要内容,如果未能解决你的问题,请参考以下文章

php调用c/c++的一种方式

逆向及Bof基础实践

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

[PHP代码审计]iWebShop开源商城系统V5.9.21010存在命令执行漏洞