我們先來看一個原始碼
看完這一個範例程式原始碼,我們可以很容易的了解到一個非常簡單的Buffer Overflow例子
在這段原始碼中,我門知道堆疊(stack)記憶空間中的A跟B是兩塊連續的記憶空間,且B再A之
前,所以只要寫滿B的空間,自然而然就會寫到A的空間,所以只要寫到A空間的時候,輸入"LOVE"
字串,就可以讓判別式成立顯示"YOU WIN"
這是個比較簡單的例子
請高手別見笑
打的好累....有錯的地方記得跟我講喔~
#include <stdio.h>
#include <string.h>
main () {
char A[12];
char B[256];
fgets(B, sizeof(B)+sizeof(A), stdin);
if (!strcmp(A, "LOVE\n"))
printf("YOU WIN.\n\n");
else
printf("Sorry. try it next time\n\n");
}
#include <string.h>
main () {
char A[12];
char B[256];
fgets(B, sizeof(B)+sizeof(A), stdin);
if (!strcmp(A, "LOVE\n"))
printf("YOU WIN.\n\n");
else
printf("Sorry. try it next time\n\n");
}
看完這一個範例程式原始碼,我們可以很容易的了解到一個非常簡單的Buffer Overflow例子
在這段原始碼中,我門知道堆疊(stack)記憶空間中的A跟B是兩塊連續的記憶空間,且B再A之
前,所以只要寫滿B的空間,自然而然就會寫到A的空間,所以只要寫到A空間的時候,輸入"LOVE"
字串,就可以讓判別式成立顯示"YOU WIN"
這是個比較簡單的例子
請高手別見笑
打的好累....有錯的地方記得跟我講喔~