"サバイバー" ののrm -rf

  
 

楽しま、私はLinuxサーバを起動することを決定した後、rootユーザーが実行する&'し、RM&ndashする; RF /'コマンド、およびそのファイルまたはコマンドが生き残るその下で観察しました。結果はあまり何もありません!あなたは&'を押すと#RM -rf --no-保存ルート/

;入力'など/などする場合、いくつかの重要なツール、:無preserceルートを再度試して、だからあなたは増加&mdash必要がありますbinに/lsの/binに/猫/binに/chmodコマンドは/usr /binに/ファイル

が消え答えてくれる!しかし、あなたの現在のSSH接続と端末はまだ、関連するすべてのbashの組み込みコマンドは、エコーとして、影響を受けていないことを示しているbashの、あります。

バッシュダレンルートの@ rmrfになっていない:/binに/LS::/#のLS-bashのそのようなファイルやディレクトリ

上記のコマンドを実行し、利用されていることが見出されなかっLSが、エコーとfileglobsまだそこに。生存者'これらの&'で誰が、我々はそれについて何かを行うことができますか?ルートの@ rmrf:/#エコー* DEV procを実行sysの#はエコーは/dev /PTS /*は/dev /PTS /0は/dev /PTS /3は/dev //ptmx

注意PTS! /dev、/procの、/実行、/SYSまだ、私たちはそれらを保つ必要があります。私たちは、lsコマンドを使用している場合は、ディレクトリの内容の読み取り操作が容易になります。ルートの@ rmrf:は/dev /PTSにおけるII /*用/#; $ IIをエコーん。行っては/dev /PTS /0は/dev /PTS /3は/dev /PTS /ptmx

多くのユーザーのredditを指摘、printfのはまだ使用可能です。 printfのパラメータを順次出力に文字列をフォーマットします:CAMH-が言いました。ルート@ rmrf:/#のLS(){printfの '%S \\ n' は$ {1:+ $ {1%/} /} *;}

のbash関数で我々ができ、定義することができるのでLS自作のツール、機能は完全ではないが。ルートの@ rmrf:/#のLS(){printf関数 '%sの\\ n' は$ {1:+ $ {1%/} /} *;} -bash:
予期しないトークン `(」の近くに構文エラー

ああ、この操作は完全に合法的な魚である必要があり、LSがマップされているか、またはそれは、別のコマンドのルートの@ rmrf :? /#タイプLSLSのエイリアスが `lsの--color = auto「で
ので、我々の上記の手順は、LSに展開&ndashのれる;色=オート(){printfの‘%S \\ N’ $ {1:+ $ {1%/} /} *;}次に、我々は最初の缶。 unaliasコマンド、LSおよびLS&mdashを削除し、カラー関連する.rootする@ rmrf:/#のLS(){IIの$ 1に/*; $ IIをエコーん。行わ}ルートの@ rmrf:/#のLSは/dev /procの/実行機能に保存されているrmrf /#lsのは/devの/dev /
PTS

utils.shファイル@ルート:: /SYSROOT @ rmrf /#エコー「のls(){IIの$ 1 /*;エコー$をしますII;}「>行わ;> utils.shroot@rmrf:/#ソースutils.sh

catコマンド読み出す読み出し手段によってそれを達成する方法パイプラインの組み合わせを使用して、生存者の一つであり、再読み込み!オリエンテーション、ルート@ rmrf :! /#の基本形状に基本的な猫< IIのutils.shls(){$ 1 /*; DO(ながらリード線; $ライン";行わ、エコー"を行います)上記の&'の組み合わせによって}

行わ;生存者' $ IIエコー徐々に命令の一部を戻す方法、および任意のマルチバイトエコー特性に書き込むことができ、我々はLinuxのツールシステムを再構築することができ、カールから直接得られるか、または私達が最初のバイナリをしたいwgetの、他の人が反響を参照すると、busybox.Busyboxスイスアーミーナイフ組込みLinux、組み込みwgetの、DD、タールおよび他の多くのツール.Eusebeîを得ることができ;.詳細な説明エスケープのbusyboxのバージョンを取得する方法を、私はここでは詳細には触れません。

しかし、問題があります。

私たちが必要な全体のバイナリファイルのすべてのバイトをエコー場合でも、これらのバイナリはまだ実行できません。あなたはbusyboxのを起動することはできません!この問題に対処するために、早期解決が実行可能なプログラムを見つけることです、その後、エコーでそれらをカバーしました。私たちは、/usrと/binにあるファイルは、変換の一種だったが、それは少し複雑なんです。

は、ワイルドカードを使用することができますし、bashシェルは、実行可能なビットがセットされたファイルを除外し、除外されたディレクトリに覚えています。実行(){[[($ 1 -d!)&アンプは、&#038; -x $ 1]];ならば、エコー" $ 1とQUOT;; Fiを}見出さ

の実行!ルートの@ rmrf:中/* II用/#;実行ファイル$ IIを行い、donerootする@ rmrf:/#で/* /* IIのため、実行可能な$ IIを行い、donerootする@ rmrf:/#IIの中に/* /* /*;が実行に/proc /1107 /exeファイルは/proc /1136 /exeファイルは/proc /1149 /exeファイルは/proc /1179 /exeファイルは/proc /1215 /exeファイルは/proc /1217 /exeファイルは/proc /1220 /exeファイル;実行ファイル$ IIを行いますの/proc /1221 /EXEの/proc /1223 /EXEの/proc /1248 /EXEの/proc /1277 /EXEの/proc /1468 /EXEの/proc /1478 /EXEの/proc /1625 /EXEの/proc /1644 /EXE /PROC /1 /exeファイルは/proc /374 /exeファイルは/proc /378 /exeファイルは/proc /471 /exeファイルは/proc /616 /exeファイルは/proc /657 /exeファイルは/proc /自己/ex​​eファイル

素晴らしいです!しかし、これらはリンクされたファイルの実行可能ファイルへの単なるソフトリンクされている、待って、ディスク上の元のファイルが存在しません。だから今、私たちは、実行可能ファイルを()書き替えこれらのソフトリンクを除外しなければなりません。ルート@のrmrf:/#の実行(){[(!-d $ 1)&#038;&#038;&#038;&#038; -x $ 1](!-h $ 1)];場合エコー" $ 1とQUOT;; Fiを}ルート@rmrf:中/* /* /* II用/#;実行ファイル$ IIを行い、donerootする@ rmrf:/#で/* /* /* /* IIのため、実行可能な$ IIを行い、donerootする@ rmrf:/#についてIIで/* /* /* /* /*;実行ファイル$ IIを行い、donerootする@ rmrf:/#IIの中に/* /* /* /* /* /*;実行ファイル$ IIを行う。
<行なわP>悪いニュース、そしてどのような出力はしませんでした。あなたはすべての後、我々はbusyboxのを再起動するマジックSysRqをキーの組み合わせを使用することができ、カーネルレベルのものを利用することができるかもしれません。ルート@ rmrf:/#は1>をエコー;は、/proc /sys /kernel /sysrqrootする@ rmrf:; B" /#エコー">は/proc /sysrqにトリガ

私たちは今、虎に乗って、そして金曜日されています、私はそれを勉強していきます。懸念をありがとう、あなたが実行可能なビットがセットものを得るための良い方法を見つけた場合、お知らせください。

UPDATE:これに完全なソリューション:Reddiユーザーthrow_away5046は、解決策を提案しました。

-xマシンアーキテクチャボックス$は、mkdir $(XXD -p -l 16は/dev /urandomが)$でcd $に対して信頼_ $ apt-getをダウンロードbusyboxのスタティックの$ dpkgのをゲット* .debという$別名エンコード=「{TR -d \\\\ n個。

Copyright © Windowsの知識 All Rights Reserved