Base64
無法編碼此字元串
我正在做一個簡單的練習,複製一個 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
執行兩者相同echo
,ls
而不僅僅是echo
. The}
是一個 shell 關鍵字,類似於if
,then
orfi
,並且它不在語法上正確的位置,因此出現錯誤。(zsh 不接受 evenecho }
,所以在那裡,它也可能被解析為運算符。)如果刪除
}
,您將看到“找不到命令”s:5:dadsa
等錯誤。您可能打算引用字元串:
echo 'O:4:"User":2:{s:8:"username";s:5:"dadsa";s:7:"isAdmin";b:0;}'
這裡的一些問答中有一些 shell(複數)特殊字元的列表,例如
,在命令行參數中需要轉義哪些字元?另請參閱如何在 Unix shell 中將特殊字元用作普通字元?以及“…”,“…”之間有什麼區別, $ ‘…’, and $ “…”在外殼中引用?