我試圖做一個緩衝區溢出(我使用Linux)在一個簡單的程序,需要密碼。這裏的程序代碼:緩衝區溢出不工作
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int check_authentication(char *password){
int auth_flag = 0;
char password_buffer[16];
strcpy(password_buffer, password);
if(strcmp(password_buffer, "pass1") == 0)
auth_flag = 1;
if(strcmp(password_buffer, "pass2") == 0)
auth_flag = 1;
return auth_flag;
}
int main(int argc, char **argv)
{
if(argc < 2){
printf("\t[!] Correct usage: %s <password>\n", argv[0]);
exit(0);
}
if(check_authentication(argv[1])){
printf("\n-=-=-=-=-=-=-=-=\n");
printf(" Access granted.\n");
printf("-=-=-=-=-=-=-=-=\n");
} else {
printf("\nAccess Denied.\n");
}
return 0;
}
好的,現在我編譯它,沒有錯誤,並保存爲overflow.c。
現在我打開終端,我搬進了文件目錄(桌面),然後寫道:
./overflow.c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
的碼頭說:「德藝雙馨檢測堆棧」(或類似的東西),然後退出程序執行。
現在,我正在閱讀Jon Erickson的一本名爲「Hacking - The Art Of Exploitation」的書。在一章中,他解釋了這種類型的漏洞利用(我從書中拿走了代碼),並做了我所做的同樣的命令。內存溢出,程序打印「訪問授權」。現在,爲什麼我的操作系統正在檢測我正在嘗試利用該程序?我做錯了什麼?
我也嘗試了在Mac OS X上的漏洞利用。同樣的事情發生了。請,有人可以幫我嗎?提前致謝。
好的,感謝您的回覆,並幫助! – jndok
不客氣:) –
好帖子,隊友!你也許也知道Cygwin環境的解決方案嗎? '-fno-stack-protector'似乎沒有任何區別。 – Powerslave