直接执行命令
以下函数都可以直接执行命令
eval();
assert();
system();
exec();
shell_exec();
passthru();
escapeshellcmd();
pcntl_exec();
......
command_execution
类似这道ping的题目,但需要通过连接符来执行多个命令
命令连接符
;
分号,没有任何逻辑关系的连接符。当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都会一条一条执行下去。||
逻辑或,当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。&&
逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行,与 || 正好相反。|
管道符,当用此连接符连接多个命令时,前面命令执行的正确输出,会交给后面的命令继续处理。若前面的命令执行失败,则会报错,若后面的命令无法处理前面命令的输出,也会报错。执行运算符
PHP 支持一个执行运算符:反引号(
`)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“
”的效果与函数 shell_exec() 相同
<?php echo `pwd`;?>
Bypass
空格过滤
cat<flag //重定向符
cat<>flag //重定向符
cat${IFS}flag //IFS
可能也过滤了{},用$IFS$1代替:
?ip=127.0.0.1;cat$IFS$1index.php
cat%09flag //其他字符代替
{cat,flag} //{,}