5.1.10. Sink

5.1.10.1. 任意代码执行

  • eval

  • assert
    • php 7.2 之后 assert 不能传入字符串表达式

  • call_user_func

5.1.10.2. 执行系统命令

  • pcntl_exec

  • exec

  • passthru

  • popen

  • shell_exec

  • system

  • proc_open

5.1.10.3. Magic函数

  • __construct() 构建对象的时被调用

  • __destruct() 销毁对象或脚本结束时被调用

  • __call() 调用不可访问或不存在的方法时被调用

  • __callStatic() 调用不可访问或不存在的静态方法时被调用

  • __get() 读取不可访问或不存在属性时被调用

  • __set() 给不可访问或不存在属性赋值时被调用

  • __isset() 对不可访问或不存在的属性调用 issetempty() 时被调用

  • __unset() 对不可访问或不存在的属性进行 unset 时被调用

  • __sleep() 对象序列化时被调用

  • __wakeup() 对象反序列化时被调用

  • __toString() 当一个类被转换成字符串时被调用

  • __invoke() 对象被以函数方式调用时被调用

  • __set_state() 调用 var_export() 导出类时被调用

  • __clone() 进行对象clone时被调用

  • __debugInfo() 调用 var_dump() 打印对象时被调用

5.1.10.4. 文件相关敏感函数

  • move_uploaded_file

  • file_put_contents / file_get_contents

  • unlink

  • fopen / fgets

5.1.10.5. SSRF

  • file_get_contents()

  • fsockopen()

  • curl_exec()

  • fopen()

  • readfile()