一、命令执行漏洞原理
用户输入数据被当做系统命令执行
<?php system('whoani')?> 其实这个一句话木马的本质就是命令执行漏洞
代码执行:用户输入数据被当做后端代码执行
命令执行:用户输入数据被当做系统命令执行
因为代码执行情况下,可以调用命令执行函数,所以大部分代码执行都可以调用系统命令,菜刀中断操作也是利用命令执行函数,命令执行也可以写文件的方法获得webshell
命令行写入文件
二、命令执行函数解析
1、system('whoami');
目标机器是linux命令,执行的就是Bash命令,如果是windows就执行cmd命令
2、echo exec('whoami');
php会操作计算机执行whoami命令,并获取最后一行数据
3、echo shell_exec('whoami');
php会操作计算机执行whoami命令并获取所有数据
4、passthru('whoami');
只调用命令,把命令的运行结果原样输出到标准输出设备
5、特殊符号,反引号(`) => echo `whoami`;
反引号其实就是调用的shell_exec()函数
6、popen(要执行的命令,参数)
r是读,w是写
$a = popen('whoami','r');
echo fread($a,1024);
这个执行命令的返回值比较特殊,返回的是一个文件指针,需要用fread读取返回值。