危险函数
❑system():输出并返回最后一行Shell结果。
**❑passthru()**:只调用命令,把命令的运行结果原样地直接输出到标准
输出设备上。它和system()函数都可以获得命令执行的状态码。
**❑exec()**:不输出结果,只返回最后一行Shell结果,所有结果可以保存
到一个返回的数组里面。
❑popen():打开一个进程管道来执行给定的命令,返回一个文件句柄。由于返回的是一个文件句柄,因此可以对它进行读和写。在PHP3中,对这种句柄只能做单一的操作,要么写,要么读;从PHP4开始,可以对其同时进行读和写。除非这个句柄是以一种模式(读或写)打
开的,否则必须调用pclose()函数来关闭它。
**❑proc_open()**:执行一个命令,并且打开用于输入/输出的文件指针。
❑move_uploaded_file():将上传的文件移动到新位置。
**❑eval()**:把字符串作为PHP代码执行。
**❑copy()**:拷贝文件。
**❑shell_exec()**:通过shell环境执行命令,并且以字符串的方式返回完整
的输出。
❑assert($assertion [, string $description]):检查一个断言是否为FALSE。如果assertion是字符串,它将被assert()当作PHP代码来执行

上面的是LINUX平台常用命令的执行格式。
无参数RCE
实际上就是通过调用函数得到想要的字符指令的过程
❑$_POST
❑$_GET
❑$_FILES
❑$_ENV
❑$_cookie
❑$_session
1 |
|
1.getallheaders()和apache_request_headers()
getallheaders()是Apache中间件函数,可以用来获取HTTP请求头部
(header)中的所有变量信息(例如User-Agent)。
apache_request_headers()是getallheaders()的别名函数,二者的效果一致。我们可以在header中增加一些自定义的字段,同时在字段值部分指定想要执行的指令。例如,test:system(ls)表示在header中增加了test
字段,其值为system(ls)。此时,如果执行getallheaders(),则可以得到一个包含test字段和其值的结果。我们可以将该自定义字段添加在特定位置(例如header的头部或尾部),然后执行指令。将自定义字段添
加到特定位置是为了方便通过其他函数进行调取。例如,我们如果将test添加在header的尾部,那么就可以使用**end()函数直接获取test的值;
如果将test添加在header的首部,就可以使用pos()**函数获取test的值。
2.get_defined_vars()
该函数属于通用函数,可以用于回显所有的变量信息
主要包括
❑$_GET
❑$_POST
❑$_FILES
❑$_cookie