无法编码该字符串

无法编码该字符串

我正在做一个简单的练习,复制一个 base64 编码的 cookie 值,然后进行一些更改,然后重新编码,然后使用结果以管理员身份登录网站。

我有以下编码字符串:

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同时运行echo和 ,ls而不仅仅是echo。是}一个 shell 关键字,类似于if, thenor fi,并且它不在语法上正确的位置,因此会出现错误。 (zsh 不接受 Even echo },因此它也可能被解析为运算符。)

如果删除},您将看到“找不到命令”s:5:dadsa等错误。

您可能想引用该字符串:

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

这里的一些问答中有一些 shell(复数)特殊字符的列表,例如
命令行参数中需要转义哪些字符?另请参阅如何在 Unix shell 中像普通字符一样使用特殊字符?shell 中的 "..."、'...'、$'...' 和 $"..." 引号之间有什么区别?

相关内容