代码执行漏洞是指,将字符串转化成代码的函数 , 进行代码注入。
### eval 语句
eval() 会将符合PHP 语法规范字符串当作php 代码执行。
但是eval() 不是PHP 的函数,是一种语法结构,不能动态调用。
在eval() 执行的字符串要以分号结束。
$code = $_REQUEST['code'];
eval($code);
?code=phpinfo();
命令执行漏洞是指,由于服务器端没有针对执行函数做过滤,将用户的输入作为系统命令的参数拼接到命令行中。
### system 函数
system() 能够将字符串作为操作系统(Operator Sytstemc,OS)命令执行。
在类似systemc() 函数调用系统命令时,PHP 会自动区分平台。
$cmd = $_REQUEST['cmd'];
system($cmd);
?cmd=whoami
?cmd=ipconfig
?cmd=uname -a
首先编写命令执行的php文件
通过命令执行编写代码执行的php文件
成功写入php文件
访问代码执行的文件,成功执行语句。