gdbはsuid rootプログラムをデバッグできますか?

gdbはsuid rootプログラムをデバッグできますか?

setuid(0)私はandを呼び出すプログラムを書いたexecve("/bin/bash",NULL,NULL)

それから私はそうでした。chown root:root a.out && chmod +s a.out

実行すると、./a.outルートシェルが作成されます。ただしgdb a.out、これにより通常のユーザーとしてプロセスが開始され、ユーザーシェルが起動します。

それでは...setuid rootプログラムをデバッグできますか?

ベストアンサー1

デバッガがrootとして実行されている場合は、setuidまたはsetgidプログラムのみをデバッグできます。カーネルはあなたが電話することを許可しませんptrace追加権限で実行されるプログラム。もしそうなら、あなたはあなたのプログラムが何でもすることができるでしょう。これは本質的にあなただけを呼び出すことができることを意味します/bin/su

Gdbをrootとして実行するとプログラムを実行できますが、rootとして実行したときにのみプログラムの動作を観察できます。

ルートで起動されていないプログラムをデバッグする必要がある場合は、Gdbの外部でプログラムを起動し、問題のある部分に達する前に何らかの方法で一時停止し、attachGdb内部プロセス(at 12341234はプロセスID)を実行します。

おすすめ記事