Base64

無法編碼此字元串

  • September 11, 2021

我正在做一個簡單的練習,複製一個 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 `}'

這給了我一個解析錯誤。前幾天我做了這個,效果很好。

為什麼我不能編碼這個字元串?

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

那裡不帶引號的分號用作命令分隔符。與echo foo; ls -l執行兩者相同echols而不僅僅是echo. The}是一個 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 中將特殊字元用作普通字元?以及“…”,“…”之間有什麼區別, $ ‘…’, and $ “…”在外殼中引用?

引用自:https://unix.stackexchange.com/questions/668568