PHP无eval后门技巧解析

需积分: 0 1 下载量 159 浏览量 更新于2024-08-05 收藏 440KB PDF 举报
"这篇文章主要探讨了PHP中无eval的代码执行后门方法,包括assert、create_function、preg_replace以及mb_ereg_replace等函数的使用。虽然PHP 7对某些函数进行了限制,但仍然存在绕过的方式。" 在PHP中,进行任意代码执行的常见手段是使用`eval`函数,它允许将字符串作为PHP代码执行。然而,`eval`因其安全性问题常常受到质疑,同时也容易被防火墙或安全策略所限制。文章提到了另一种常用的替代方法——`assert`,它同样可以执行用户输入的代码。虽然有人认为`assert`在PHP 7.0及以上版本被禁用,实际上只是禁止了直接的字符串拆分使用。 此外,文章介绍了两种在PHP 5中可以执行任意代码的技巧: 1. `create_function`:这是一个可以创建匿名函数的构造器,它允许将字符串作为执行的代码。尽管有传言称PHP 7中不再支持,但实际并非如此,它仍然可以工作。 2. 使用`/e`修饰符的`preg_replace`和`preg_filter`函数:这两个函数在PHP 5中可以执行代码,但在PHP 7中已被废弃。 在PHP 7中,由于`/e`修饰符的安全问题,它被弃用,但文章指出可以通过`mb_ereg_replace`和`mb_eregi_replace`以及它们的别名`mbereg_replace`和`mberegi_replace`,在`ee`模式下模拟`/e`修饰符的功能,达到代码执行的目的。 然而,这些技术在现代PHP环境中可能不太适用,因为安全防护措施已经发展得更加完善。文章提醒读者,这些方法在绕过防御系统时可能并不足够有效,建议使用更复杂的方法,如创建混淆的自定义类,并根据PHP版本(5使用assert,7使用create_function)进行不同的代码拆分,以提高绕过检测的可能性。 文章提供了一些关于PHP中无`eval`的代码执行方法,但同时也强调了这些方法在当前环境中的局限性和不安全性。在实际应用中,应尽量避免直接执行用户输入的代码,而是采用安全的编程实践和过滤机制来保护系统免受潜在攻击。