我一直在FreeBSD系統上嘗試緩衝區溢出。 作爲第一個實驗,我試圖讓被攻擊的程序啓動另一個進程(在本例中是/ bin/hostname)。這一切都很好,程序打印主機名,然後終止。 之後,我試圖讓程序產生一個shell(即執行/ bin/sh)。我認爲這可以通過簡單地交換表示要調用的程序的字符串來完成。當我嘗試這個時候,被利用的程序只是退出,根據gdb它成功地產生了一個新的進程(/ bin/sh)。但是,沒有生成shell。 然後,我嘗試了我的第一個漏洞,並將/ bin/sh文件移動到/ bin/hostname,但仍然沒有更改任何內容。 我的問題是現在,從任何其他命令執行/ bin/sh似乎有什麼不同?緩衝區溢出 - 產生shell後程序終止
作爲參考,對於殼產卵的嘗試我用下面的shellcode:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
這可能是相關的:http://forums.freebsd.org/showthread.php?t=10054 – zxcdw
更多的信息似乎是必要的,所以發佈你的代碼包括你的shellcode-source,這樣人們可以查看它。 – rumpel