コアダンプの数だけ強くなれるよ

見習いエンジニアの備忘log

C言語でbuffer overrun

お呼びでない関数を実行する。

overrun.c

#include <stdio.h>
#include <stdlib.h>

void goast(void)
{
    printf("Boo!\n");
}

void dummy(void)
{
    char a[1] = {0};

    a[9] = &goast;
}

int main(void)
{
    dummy();
    return 0;
}


実行例

$ gcc overrun.c
overrun.c: In function 'dummy':
overrun.c:13: warning: assignment makes integer from pointer without a cast
$ ./a.out
Boo!
Segmentation fault