Buffer Overflow导致另一个函数被调用

2009-10-26

我记得以前MS的林斌到学校演讲,演示了一个Buffer Overflow,冲掉了函数返回地址结果改成了另一个函数。

今天一时兴起想做个demo,试了一个多小时,终于成功了

下面这份代码编译以后执行的时候会调用到bad函数,呵呵

C++语言: Buffer Overflow导致另一个函数被调用
//搞定了,呵呵
//具体参见:http://en.wikipedia.org/wiki/Stack_buffer_overflow
#include <stdio.h>
#include <string.h>

void bad() {
    printf("Oh shit really bad~!\r\n");
}

void foo() {
    char overme[4] = "WOW";
    *(int*)(overme+8) = (int)bad;
}

int main() {
   foo();
}

参考:http://en.wikipedia.org/wiki/Stack_buffer_overflow

2 条评论

littlewater 2009-10-28 20:18:18
强的- -|||
G_cofa 2009-11-01 11:09:02
嗯,这个还基本从来没考虑过了,厉害。