聘我网

新概念招聘3.0

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

vote up0vote downstar

中间没有任何调用bad的代码,但是实际执行的时候bad被调用

#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();
}

详见Stack buffer overflow

更新

x86-64,offset应该是24,也就是overme+8=>overme+24

 

2 个答复

vote up0vote down

命令行编译和调用:

D:\gcc -Wall -Wextra hw.cpp && a.exe
Oh shit really bad~!
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.