web-dev-qa-db-ja.com

bash文を「エンコード」することは可能ですか?

私は最近、かなり変だと思ったCTFの課題を解決していました。まず、私は文字のチェーンを与えられました。それは、どんなに難しい答えでも見つけられなくても、見つけることができません。そのチェーンの一部を公開します。挑戦を妨害するのではなく、私を導くことができる答えを得るために:

D'`_$^"7m5X32Vxfvu?1NMpLml$jGFggUdSbb}<{)]xqpunm3qpohmfe+Lbgf_^]#a`Y^WVz=<XWVONrLQJINGkEiIHG)?c&BA:?>=<5Y

最初に考えたのは、ハッシュのタイプではあり得ないことです。そのようなものは一度も見たことがありません。そのため、手掛かりを探した後、考えられる答えを見つけ、この文字列をコマンドプロンプトに入力しました。これが結果です。

root@localhost:~/Folder# (here goes the chain)
>

それは「python」を置いたようなもので、言語で文章を書き続けることができます。その後、チェーンの他のブロックを貼り付けようとしたところ、次のようなメッセージが表示されました。

bash: (chain): event not found
bash: command substitution:

それがコード化されたbashステートメントである可能性はありますか?そうであれば、それをどのようにデコードまたは理解できますか?それが私が考えているものでない場合、正確にはどうでしょうか?

あなたが私を案内してくれることを願っています

1
Julián

その文字のチェーンが何であるかはわかりませんが、それは明らかにシェルコマンドではありません。何が起こっているのかというと、bashは文字列内のさまざまなシェルメタ文字を解釈して操作しようとしていますが、意味のない方法で使用されているため、bashはエラーを発生したり、何も起こらないことを行ったりしています。センス。

具体的には、リンクした文字列は "D"で始まり、その後に単一引用符が続きます。 bashが単一引用符を見つけると、それをコマンド行の引用符で囲まれたセクションの先頭として扱います。引用セクションの終わりを示す2番目の単一引用符はありません。そのため、入力後にReturnキーを押すと、シェルは複数行の文字列を入力していると見なします。 ">"プロンプトは、bashの標準の継続プロンプトです。これは、完全なコマンドをまだ入力していないため、有効な停止ポイント(引用符で囲まれた文字列の途中ではない)に到達するまで続行する必要があることを示します。

報告する他のメッセージは、チェーンのブロック内の他のメタキャラクターに関係しています。

  • bashは "!"を扱います履歴置換の開始として、つまり、以前の(履歴)コマンドのすべてまたは一部を再利用する(過去の「イベント」)。 「!」の後に来るもの再利用する「イベント」を示しますが、何にも一致しないため、「イベントが見つかりません」というメッセージが表示されます。

  • bashは、バッククォートをコマンドの置換を示すものとして扱います。つまり、バッククォートの内容をコマンドとして実行し、現在のコマンドラインでそのコマンドの出力を置き換えます。関連するテキストやエラーが何であるか正確にはわかりませんが、いくつかの逆引用符の間に意味をなさないものがあり、シェルはそれについて不平を言っています。

4
Gordon Davisson