PHP命令执行 漏洞学习
概念
日常的网络访问中,我们常常可以看到某些Web网站具有执行系统命令的功能,比如:有些网站提供ping功能,我们可以输入一个IP地址,它就会帮我们去尝试ping目标的IP地址,而我们则可以看到执行结果。
但是如果用户没有遵循网站的本意,而去输入精心构造的指令,可能会对网站本身的功能逻辑产生逆转,导致让目标网站执行恶意命令。
恶意用户通过将恶意系统命令拼接到正常命令中,让网站执行恶意命令
pcntl_exec()
pcntl_exec ( string $path [, array $args [, array $envs ]] ) : void
以给定参数执行程序。
参数:1.path必须时可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本
2.args是一个要传递给程序的参数的字符串数组。
3.envs是一个要传递给程序作为环境变量的字符串数组。这个数组是 key => value格式的,key代表要传递的环境变量的名称,value代表该环境变量值。
shell_exec()
通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
<?php
$cmd = $_GET