저는 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 을 허용하지 않으므로 연산자로 구문 분석할 수도 있습니다.)echo
ls
echo
}
if
then
fi
echo }
삭제하면 "명령어를 찾을 수 없습니다"와 같은 오류가 }
표시됩니다 s:5:dadsa
.
문자열을 인용할 수도 있습니다.
echo 'O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;}'
여기 일부 Q&A에는 쉘(복수형) 특수 문자 목록이 있습니다.
명령줄 매개변수에서 어떤 문자를 이스케이프해야 합니까?또한보십시오Unix 쉘에서 일반 문자와 같은 특수 문자를 사용하는 방법은 무엇입니까?그리고셸에서 "...", '...', $'...' 및 $"..." 따옴표의 차이점은 무엇입니까?