buffer overflow 0

Q. シンプルにいきましょう。正しいバッファをオーバーフローさせてください。

バイナリファイル、vuln.c、実行用インスタンスが用意されている。 buf1で受け取った文字列を、16文字分のbuf2へコピーするときにオーバーフローが発生する。 長い文字列を入力してエラーを起こすと、flagを取得できる。

Flag: picoCTF{ov3rfl0ws_ar3nt_that_bad_ef01832d}

補足:

// vuln.c

void sigsegv_hander(int sig){
    printf("%s\n", flag);
    fflush(stdout);
    exit(1);
}

signal(SIGSEGV, sigsev_handler);

signalでエラーハンドラーを登録している。 エラーが発生すると、flag.txtの内容を出力する。