任意のコードを実行せずに cat コマンドを安全に実行

任意のコードを実行せずに cat コマンドを安全に実行

私はこの小さなファイルを 16 進数の組み合わせに基づいて作成しましたが、cat が壊れ、cat を含むファイルを表示するターミナルが壊れてしまいました。リセットはもう機能しません。cat を一種のループに陥らせているのかもしれません。誰か説明してください。問題は発生しませんが、私が確認していない副作用が発生する可能性があるため、本番環境では実行しないでください。

Cat Killer バージョン 1 をダウンロード

「cat brokecat」というコマンドを実行すると表示されます。

これは、任意のコードを実行できる cat のセキュリティ問題なのでしょうか?

別の例: cat /usr/bin/vi は、最後に見つからないいくつかのコマンドを実行できます。

cat を実行するより安全な方法はありますか?

答え1

cat -v /usr/bin/vi端末が処理しようとする実際の制御文字としてではなく、印刷できない文字を ASCII 表現として印刷するようにすることができます。これで問題は解決しましたか?

答え2

任意のファイルを「cat」するのは絶対にやめてください。たとえそのファイルが悪意のあるものではなかったとしても、それはよくありません。

ファイルの「タイプ」は、たとえば などの「file」プログラムを実行することで判別できますfile /usr/bin/vi。いずれにせよ、'cat' を使用するのは低レベルです。おそらく 'more' または 'less' を使用してみてください。試してみると、 という結果more /usr/bin/viになります/usr/bin/vi: Not a text file

また、「reset(1)」コマンドを使用して端末をリセットすることもできますが、resetC-J端末が raw モードになった場合は、文字列「reset」に続いて「control-J」を入力する必要がある場合があります。

関連情報