タイトルのマットで申し訳ありませんが、これはエンターテイメントのヒントです。その始まりは「Brainfac」という言語によって与えられました-任意の言語で、文字や数字を使用せずに合理的な何かを実行するコードを記述します。 私たちはすでに
JSFuck 、
PHPFuckを見てき
ました 、今私
はあなたにBashfuckを紹介したいと思い
ます :
__=${_##*/};____=<(:);___=${__#???};_____=$((${#___}<<${#___})) __=${__::-${#___}}${____:$_____:${#___}} __=$__$((${#__}|$_____))$((${#__}));___=$___${__:${#___}:${#___}};____=$($__<<<$_____|$__) _____=${____:$((${#__}-${#___})):${#?}};___=$___$_____$_____;____=$($__<<<$____|$__|$__) ___=$___${____:$((${#?}+${#__})):${#?}};___=$___' '${____:$((${#___}+${#___})):${#?}} ___=$___${__:$((${#____}/${#___}-${#?})):${#?}};___=$___${____:$((${#____}
開始するには、
4番目のバージョンの「bash」が必要です。 このスクリプトは
、「ルート」の下から悪意を持って
大胆に実行されることはなく、単に「Happy new year」という碑文を表示します。
ソースをファイルにコピーして実行する必要があります。
作業の原理について少し説明します。
幸いなことに、「バッシュ」にはさまざまな落書きが豊富にありますが、変数の名前は、私たちの制限の条件下では、異なる数の下線のみで構成でき、コード内で明確に表示されます。 文字はどこから来たのですか?
ああ、ここで頭を砕かなければなりませんでした!
工業的な量の文字を受信するには、まず変数に
base64コマンド名を取得する必要があり
ます。意味のないものを渡すと、出力でアルファベット全体を取得できます。
シェルの名前から最初の3文字(変数「$ _」の入力でパスが指定されるため「
bash 」)、およびプログラムが標準入力にデータを受信できない場合に使用される特殊ファイルの名前から4文字目を取りました。 ファイル名は常に「
/ dev / fd 」で始まるため、欠落している「
e 」が使用されます。
数値は簡単に取得できます。
まず、「bash」(多くのシェルと同様)を使用すると、「$ {#name}」の構築を通じて変数の長さを測定できます(たとえば、ユニットを取得するのは簡単です-この値があるため、前のコマンドの戻りコードの変数の値の長さです)常にゼロ、その長さは常に1)。
第二に、$((...))の構築により、さまざまな変数の長さと演算を組み合わせて計算を行うことができます。不足している数値が得られます。 計算システムを変更する操作-グリッドを適用しなければならなかったエキゾチックなものから、非常に多くの自由を与える多くの操作があります。
「
base64 」コマンドを受信した後、彼女の入力にあるデータを(呼び出しのチェーンを介して)置き換えて、返されたゴミから残りの文字を取得できます。 文字を削除したり、部分文字列を選択したりする操作を使用して、それらをかみます-「シェル」のこれらの操作も「波打つ」ようにします。
最後に、4番目の「bash」の変数を使用した新しい操作が便利になりました。文字の大文字と小文字を変更できるようになりました。
そのため、最後にコマンド「
cat <<< 'Happy new year' 」を取得し、実行します。 なぜ「
echo 」または「
printf 」ではないのですか? それらは単純に長くなります-余分な文字はそれぞれ変数と操作の面倒です。
明けましておめでとうございます!