Web 应用渗透测试 01 - 命令注入(Code Injection)之 create_function

背景

这篇文章将讨论 PHP Web 应用中 create_function 的命令注入。命令注入,究其根源,都是未对用户提供的输入做合理过滤造成的。当然,编程语言本身内置的危险方法的使用,是命令注入频发的另一原因。

各种变成语言的危险方法有所不同,对于 PHP 而言,我们可以再这里找到一系列的 PHP 危险方法。在使用这些方法的时候,一定要考虑其安全隐患。

在这些众多的危险方法中,最臭名昭著的,当是 eval() 莫属。这个方法可以直接调用,也可以通过其他的 PHP 内置方法间接调用。

今天,我们看一下 PHP 4 时代就存在的 create_function 内置方法,是如何走向命令注入的。

环境参数

create_function 存在于 PHP 4 >= 4.0.1, PHP 5, PHP 7 版本中。

该方法已经在 PHP 7.2.0 中废弃,并在 PHP 8.0.0 中移除。

在这里插入图片描述

create_function 方法

这里,我们看一下该方法的基本作用,它的应用,最后看一下源码,找出命令注入的成因。

方法介绍

根据官方文档create_function 方法,顾名思义,就是可以将自定义的代码字符串,解析成可执行代码,并且可以指定任意个方法参数。

我们到 Online PHP Playground 来通过实例看一下这个方法的使用。

我们选择 PHP 7.0.33。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值