直接执行命令
以下函数都可以直接执行命令
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.phpcat%09flag //其他字符代替{cat,flag} //{,}
