Para esta prueba solo se necesita saber explotar una vulnerabilidad overflow.
Leemos el código y observamos que hay un problema, cuando gets pasa directamente un array de 100 a otro array de 16 usando strcpy, esto produce un overflow.
vamos a colocar un break en 0x56556462 y observemos la cantidad que es colocada para usar gets

ahora vamos a comparar con strcpy de la función vuln.
0x56556374 <+33>: call 0x56556170
0x56556379 <+38>: add esp,0x10
Recordemos que call es en realidad call + 1 por eso se llama a strcpy con un espacio de 16 (0x10).
Ahora veamos que pasa cuando sobreescribimos.

Podemos ver que "esp" toma got de puts donde se encuentra la flag.

Listo.