First lets start a binary.chmod +x penguin./penguinAnd 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{")                                                                         = 4strncmp("WPI{", "WPI{123}", 4)                                                         = 0strlen("strings_")                                                                     = 8strncmp("strings_", "123}", 8)                                                         = 66puts("WRONG"WRONG)                                                                          = 6+++ exited (status 0) +++
Lets try WPI{strings_123}.
ltrace ./penguin WPI{strings_123}
strlen("WPI{")                                                                         = 4strncmp("WPI{", "WPI{strings_123}", 4)                                                 = 0strlen("strings_")                                                                     = 8strncmp("strings_", "strings_123}", 8)                                                 = 0strlen("only_")                                                                        = 5strncmp("only_", "123}", 5)                                                            = 62puts("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 :