[英]Buffer overflow - Program terminated with signal SIGSEGV
我正在學習緩沖區溢出漏洞利用。 我寫了這樣一個易受攻擊的程序:
#include <stdio.h>
#include <string.h>
main(int argc, char *argv[])
{
char buffer[80];
strcpy(buffer, argv[1]);
return 1;
}
很簡單的程序。 想法是覆蓋用於返回libc函數start_main
的返回地址。 一切都很順利,我使用GDB來驗證返回地址是否被指向內存中shellcode
的正確地址覆蓋。
但是,當我想要獲得一個shell時,會出現:
Program received signal SIGSEGV, Segmentation fault. 0xbffff178 in ?? ()
0xbffff178
是返回覆蓋的返回地址,它確實指向shellcode
我很確定。 有幫助嗎?
您可能有一個無執行堆棧,禁止從某些地址范圍執行代碼。 您需要使用-z execstack
進行編譯以強制堆棧可執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.