web-dev-qa-db-ja.com

ナルニア国物語で常に特権を昇格させるとは限らないシェル

私はさまざまな有線ウォーゲームを経験していますが、narnia0について質問があります。 cのコードには次のものが含まれています

if(val==0xdeadbeef)
system("/bin/sh");
else {
printf("WAY OFF!!!!\n");

単純なバッファオーバーフローで動作するようになりましたが、gdbを使用して他の方法を見つけてみたかったのです。 mainを逆アセンブルし、cmplの後とjneの前にブレークポイントを設定しました。次に、マシンコードを0x75から0x74に変更しました。続けてみると走った

system("/bin/sh");

しかし、idを実行したとき、私はまだnarnia0ユーザーグループにしかいませんでしたが、バッファオーバーフローを実行した場合、私はnarnia1グループにいました。特権をgdbとして昇格させることは不可能ですか?また、マシンコード/変数を変更できる環境で特権を昇格するための回避策はありますか?

1
user3364161

これは、gdbで実行したときに現在ログインしているユーザーのアカウント(narnia0)で実行されているプログラムと、プログラムの実行時にnarnia1ユーザーアカウントで実行されているプログラムが原因のようです。

これは、プログラムファイルのアクセス許可を調べることでさらに調査できます。 (「ls-al」を使用して、ファイルのアクセス許可を確認します。

ファイルのアクセス許可がどのように機能するかについては、こちらをご覧ください: https://en.m.wikipedia.org/wiki/Setuid

2
SecretSasquatch