문제 파악./prob처음 실행해보면 문자열을 입력 받는거같은데, 조금 이상하다. 뭔가 문자열 혹은 버퍼가 깔끔하게 들어가고 있는 느낌은 아니다. 카나리 없고, PIE 없다. 개꿀. IDA처음 실행하면 16바이트를 입력받고, s1이 Decision2Solve와 같은지 비교한다. read_input은 1바이트씩 반복문을 통해 입력을 받는다.이걸 보고 알 수 있는건, 처음 실행했을 때 이상하게 문자열이 들어가는 느낌이 이것 때문이라는 것을 알 수 있다. 버퍼에 남아있는 값들이 다음 입력으로 넘어가거나,,, 엔터까지 받아버리고 등등,,, 취약점unsafe_func()을 보면 너무 당당하게 bof가 발생하고 있다. 근데 보자마자 조금 쎄한건 0x10000만큼이나 받아버리면... 정상 실행이 가능할까...? 우선 ..
#include #include #include #include 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(30); } void get_shell() { system("/bin/sh"); } void print_box(unsigned char *box, int idx) { printf("Element of index %d is : %02x\n", idx, box[idx]); } void menu() { puts("[F]ill the ..