0

Linux ツールの練習の一環として、私はランダムな「bash チャレンジ」を試みてきましたが、1 つに固執しています。できない制限された bash シェルを使用してcdおり、スラッシュを含むコマンドを実行できません。出力リダイレクトも利用できません。PATH 環境変数も、非常に限られたツールのサブセットを指すように設定されています。すなわち:

awk,cmp,cut,egrep,find,grep,gzip,hostname,less,lsof,netstat,nm,ps,sed,ssh-agent,
sum,tar,uname,vi,whoami,xz,zcat,cat,column,diff,fgrep,gdb,gzcat,head,
ifconfig,ls,mv,nl,ping,sort,strings,tail,top,uniq,xargs,xzcat

今、awk私は無制限のシェルにアクセスすることができます - パズルの質問は次のとおりです:「awk使用可能なコマンドのリストから削除されるまでの時間が限られている場合、無制限のシェルに到達する方法を確保する方法はありますか?今後? このユーザーの下のホーム ディレクトリは書き込み可能ではありません。

awk unrestricted シェルの下で、/bin/sh他の場所にコピーを作成しようとしました...しかし、スラッシュが含まれているため、後で/tmp/writable /tmp/writable/sh`/tmp/writableに移動できないため、機能しません。同じ理由で、ソフトリンクを作成することもできません。ログインスクリプトに永続的なものを残すことができないと仮定すると(簡単に検出されます)、これに対する他のアプローチはありますか?cdand i can't run

4

2 に答える 2

2

は setuid root であるため、以下chshを使用してログイン シェルを無制限に変更できますawk(無制限のシェルを実行できるので、実行できると思います)。そうすれば、次にログインするときに、シェルが制限されなくなります。

それ以外の場合、Brian Campbell が指摘しているように、無制限のシェルにアクセスする方法はawk.

于 2013-05-10T23:21:48.043 に答える
1

GDB を利用できる場合は、execそこから関数の 1 つを呼び出すだけで、制限のないシェルを取得できます。

$ gdb cat
(gdb) run
^C
(gdb) call execl("/bin/sh", 0);
$

そして今、あなたは無制限のシェルにいます。

于 2013-05-10T22:52:45.297 に答える