Saya menulis sebuah program yang memanggil setuid(0)
dan execve("/bin/bash",NULL,NULL)
.
Lalu saya lakukan chown root:root a.out && chmod +s a.out
Ketika saya mengeksekusi ./a.out
saya mendapatkan shell root. Namun ketika saya melakukannya gdb a.out
memulai proses sebagai pengguna normal, dan meluncurkan shell pengguna.
Jadi ... bisakah saya men-debug program root setuid?
gdbserver
sebagai root dan terhubung dengannya sebagai pengguna normal. Dari komentar Anda, sepertinya Anda tidak berhasil melakukannya dengan cara yang sederhana (menjalankan gdb sebagai root) tapi saya tidak mengerti apa yang salah, jadi saya tidak dapat membantu.Inilah cara untuk memulai proses dalam keadaan terhenti jika Anda mau. Gunakan skrip bash untuk:
Jadikan itu berjalan di latar belakang.
Kemudian mulai
gdb
, dan lampirkan ke pid yang dicetak.Anda harus melangkah melalui
exec
perintah dengangdb
, tetapi Anda akan dapat men-debug dari awal.sumber