Hey Mates,
in the last days I announced a realistic challenge for you. I worked hard, so here is a real challenge for you. If you stuck at some point you can search in the hints section for some help .
Description of the RE Challenge
This time you have a step-by-step challenge, which canât be solved that easy. Itâs a little Connect Four game with a good protection (But not that good; shouldnât be too hard ;)) which has to be hacked. Ok, there are different difficultys. I recommend to take the hard way: In a realistic scenario you have the obfuscated client and no chance to touch the server, so try it first that way. Maybe you could have a look at the server if you stuck. Also you can find help in the hints section.
Difficulty 7/10
Requirements
- Time
- C# knowledge
- Fun at Reversing
- And if you donât want to use the hints a knowledge of secure programming could be valuable
Download
This time I packed it into a .rar archieve because itâs way easier.
Obfuscated: https://mega.nz/#!6lIlBQRR!LFgB9DCKz_OUrJFP_qnIHopVrk30erdu7bhMIfKnOkU
Unobfuscated: https://mega.nz/#!CsZ20ahB!RBlTFgppXtaFsasbYe1wjrgqQ551nNOl8xm9Sh7J1Ac
Exercise
This time you have to find a vulnerability which can be used to win the game. Imagine Player 2 plays not on the same computer but via internet and you (player 1) want to win against him. It is not allowed to change the server. You didnât won just because your client says you had; the server has to print out that youâve won. Donât touch any files in the server folder. Ok, I had to forbid much . I hope I didnât forget anythingâŚ
Your exercise is to write a patched client which can be used for winning the game easily.
Hints
What is Heartbeat?
Heartbeat is a protection technique which sends every few seconds a hash of the client file to the server, that it can validate if itâs not patched.
How can I beat heartbeat in this case?
In this game it is not validated if the hash is really from the client. Just copy the unpatched client and rename it to âheartbeat.exeâ. Now change the String in the client representing the file which has to be hashed to âheartbeat.exeâ. Everything now works fluentless ;).
You got lost in the Code and have no idea where to look at?
Just think of it. Where can you change the server without changing the source? Yes, the input you give to the server. Have a straight look where you send input to your server and try to understand what you are sending. Maybe you then get an idea what could be bad validatedâŚ
You canât find the vulnerability but want to go on hacking it. So where is it?
As I said before itâs a validation mistake of the server. Maybe you even tried to send the server two times in a row a position from player 1 and he said âNo, thatâs not true!â. That was a good start! But not the player is the vulnerability, it is the position itself. The server doesnât validate if itâs already taken by a player, so you can put a coin in a place where player 2 already placed one ;).
Any other hints needed?
Just PM me or ask in the comments if you stuck at a particular thing and the hints above would help you too much or didnât help you.
Conclusion
If you did that challenge without having a look at the server source and you used the obfuscated version youâre really an 1337 h4xx0r . This is a realistic example how a vulnerabilty could be exploited. As always Iâm already working on the next part, but what do you want: More tutorials in C# and should they be harder or easier than this one? Or do you want a new language, maybe Java/Android reversing or C/C++?
|-TheDoctor-|