R-Boy is sure the Rebels are planning something! Immediately, he starts looking for their plan. Indeed, the Rebels have been careless! On a different port on the same host, R-Boy uncovers a strange binary application, which surely hides a key. Oh no, R-Boy definitely needs help!
First of all, I tried to run the program…but…
sh $ ./tangle $
Nothing happened…let’s find out why..
So I tried to run it using ltrace to see if it does something background.
sh $ ltrace ./tangle +++ exited (status 255) +++
But even this time, nothing.
For this challenge I decided to use Cutter, with that was easily to see that the main receive 2 args, so i tried to do ltrace with 2 arguments.
sh $ ltrace ./tangle first second strlen("first") = 5 +++ exited (status 255) +++
I descovered it calls strlen on the first argument and then exits.
By analyzing the code I could see that the program calls many times strlen on the first argument and check if there are 2 arguments, all this steps are useless and redundant.
Sometimes there are also some piece of code that check needlessly if a character of the first argument is equal to itself.
What are needed to find out the flag are the parts like this one:
Where it takes a char in the first argument to check if it is part of the flag…
In conclusion the flag was: