(一)PHP命令执行:
1.string system
string system (string command,int &return_var)可以用来执行系统命令并将相应的执行结果输出
2. string exec
string exec(string command,array &outpub,int &return_var)
command是要执行的命令,output是获得执行命令输出的每一行字符串,return_var存放执行命令后的状态值。exec输出的是命令执行结果的最后一行内容。如果你需要获取未经处理的全部输出数据,请使用passthru()函数。
3. passthru
void passthru(string command, int &return_var)
command是要执行的命令,return_var存放执行命令后的状态值。
4.string shell_exec
string shell_exec (string command)command是要执行的命令。
5.反引号运算符
反引号运算符与shell_exec功能相同,执行shell命令并返回输出的字符串。
6.一些命令分隔符:
linux中:%0a 、%0d 、; 、& 、| 、&&、||
windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)。
空格被过滤:
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等
7.花括号的别样用法:
在Linux bash中还可以使用{OS_COMMAND,ARGUMENT}执行系统命令
8.拼接绕过:
比如:a=l;b=s;$a$b,a=fl;b=ag;cat $a$b,即cat flag,长用于绕过黑名单检测。也可用编码的方式
9.内联执行:
内联,就是将反引号内命令的输出作为输入执行,类似的还有$(command)
10.长度限制:
长度限制可以用文件构造

本文详细介绍了PHP中的命令执行函数,如system、exec、passthru等,以及如何通过各种方式绕过限制,如拼接、内联执行和长度限制。同时,文章总结了PHP常见函数的漏洞,如匿名函数、可变函数和回调函数的安全问题,并提到了全局变量导入、preg_replace的/E修饰符可能导致的代码注入。此外,讨论了PHP的文件包含、弱类型、溢出漏洞、跨行匹配、open_basedir限制的绕过方法,以及正则回溯和序列化反序列化的安全性。

1181

被折叠的 条评论
为什么被折叠?



