可执行的PHP

直接执行 PHP 代码(最高风险)

  • eval()

    把字符串当作 PHP 代码执行。

  • assert()(PHP < 7.2)

    字符串模式下会当 PHP 执行。

  • preg_replace(‘/e’)(已废弃)

    /e 修饰符会把替换内容当 PHP 执行。

  • create_function()(已废弃)

    用字符串创建匿名函数,本质 eval。

  • runkit_function_add() / redefine() /Runkit 系列(PECL 扩展)

    通过字符串动态创建或修改函数,会执行代码。

执行系统命令

  1. system()

  2. exec()

  3. shell_exec()

  4. passthru()

  5. (反引号执行)

  6. popen() / proc_open()

  7. pcntl_exec()

文件包含导致 PHP 执行

以下属于文件包含导致代码执行(LFI/RFI):

  1. include()
  2. include_once()
  3. require()
  4. require_once()

通过反序列化触发代码执行(POP 链)

  1. unserialize()

本身不会执行代码,但如果对象内有:

__destruct

__wakeup

__call

__callStatic

__toString

就可能触发代码执行链(典型 GDPR/CTF/RCE 漏洞)。

一些不直接执行代码,但可构建为 RCE 的函数

这些函数本身不执行 PHP,但常被用于“文件写入 → 再 include”链:

  1. file_put_contents()
  2. fwrite()
  3. move_uploaded_file()

配合 include 就能形成 RCE。