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の内容を出力する。