oneshot
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void alarm_handler() {
puts("TIME OUT");
exit(-1);
}
void initialize() {
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
signal(SIGALRM, alarm_handler);
alarm(60);
}
int main(int argc, char *argv[]) {
char msg[16];
size_t check = 0;
initialize();
printf("stdout: %p\n", stdout);
printf("MSG: ");
// 버퍼 오버플로우 발생
read(0, msg, 46); // msg에 46 Byte 크기 만큼 입력을 받음
if(check > 0) { // check가 0보다 크면
exit(0); // 프로그램 종료
}
printf("MSG: %s\n", msg);
memset(msg, 0, sizeof(msg));
return 0;
}
페이로드

Last updated