私は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
両方を実行します。はまたは類似のシェルキーワードであり、構文上正しい場所にないため、エラーが発生します。 (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シェルで通常の文字などの特殊文字を使用する方法は?そしてシェルの「...」、「...」、$'...'、および$"..."引用符の違いは何ですか?