Rating:

First lets start a binary.
chmod +x penguin
./penguin
And we got :
GIB FLAG PLZ
(./ezpz "WPI{some_flag_here}").
Lets give it flag.
./penguin "WPI{123}"

WRONG

Lets watch how it works in ltrace.
ltrace ./penguin "WPI{123}"

strlen("WPI{") = 4
strncmp("WPI{", "WPI{123}", 4) = 0
strlen("strings_") = 8
strncmp("strings_", "123}", 8) = 66
puts("WRONG"WRONG
) = 6
+++ exited (status 0) +++

Lets try WPI{strings_123}.

ltrace ./penguin WPI{strings_123}

strlen("WPI{") = 4
strncmp("WPI{", "WPI{strings_123}", 4) = 0
strlen("strings_") = 8
strncmp("strings_", "strings_123}", 8) = 0
strlen("only_") = 5
strncmp("only_", "123}", 5) = 62
puts("WRONG"WRONG
) = 6
+++ exited (status 0) +++
We know what program will get parts of the flag and compare it with real.
After several times we got :