[중복] 문자열을 인코딩할 수 없습니다.

[중복] 문자열을 인코딩할 수 없습니다.

저는 base64로 인코딩된 쿠키 값을 복사한 다음 몇 가지 사항을 변경하고 다시 인코딩한 다음 결과를 사용하여 사이트에 관리자로 로그인하는 간단한 연습을 하고 있습니다.

다음과 같은 인코딩된 문자열이 있습니다.

Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjU6ImRhZHNhIjtzOjc6ImlzQWRtaW4iO2I6MDt9 

나는 이것을 다음과 같이 디코딩합니다.

$ echo Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjU6ImRhZHNhIjtzOjc6ImlzQWRtaW4iO2I6MDt9 | base64 --decode                       1 ⨯
O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;} 

그런 다음 관리자로 로그인할 수 있도록 약간 변경했습니다.

O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:1;} 

그들은 그것을 다시 인코딩하려고 시도합니다.

$ echo O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;} | base64                                                    1 ⨯
zsh: parse error near `}'

이로 인해 구문 분석 오류가 발생합니다. 나는 지난번에 이것을 했고 그것은 훌륭하게 작동했습니다.

이 문자열을 인코딩할 수 없는 이유는 무엇입니까?

답변1

echo O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;}
                                 ^           ^             ^   ^

따옴표가 없는 세미콜론은 명령 구분 기호로 사용됩니다. 실행과 동일하게 . 뿐만 아니라 및 echo foo; ls -l둘 다 실행합니다 . 은 또는 와 유사한 쉘 키워드 이며 구문상 올바른 위치에 있지 않아 오류가 발생합니다. (zsh는 Even 을 허용하지 않으므로 연산자로 구문 분석할 수도 있습니다.)echolsecho}ifthenfiecho }

삭제하면 "명령어를 찾을 수 없습니다"와 같은 오류가 }표시됩니다 s:5:dadsa.

문자열을 인용할 수도 있습니다.

echo 'O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;}'

여기 일부 Q&A에는 쉘(복수형) 특수 문자 목록이 있습니다.
명령줄 매개변수에서 어떤 문자를 이스케이프해야 합니까?또한보십시오Unix 쉘에서 일반 문자와 같은 특수 문자를 사용하는 방법은 무엇입니까?그리고셸에서 "...", '...', $'...' 및 $"..." 따옴표의 차이점은 무엇입니까?

관련 정보