4aca7f6c's prisoners_dilemma



10:43 PM 02/07/2019


Unix/linux etc.


A crackme (my first!) for x86-64 linux, written mostly in C, with some parts written in assembler. It does not take any command line arguments, but rather prompts the user for a string. The goal of the crackme is to find the correct input string. Patching the binary would be way too easy, and therefore does not count as a solution. I'm guessing that the difficulty is a 3, but I could be wrong. The reverse engineering isn't too crazy, but this challenge does require a little more than just reverse engineering.... Feel free to adjust the difficulty in either direction. Enjoy! SHA256: 140abaea34893d41971bdb40184b0c6d281b597490498e357af13d33fcda6754 prisoners_dilemma

s4r on 7:41 PM 02/11/2019: I started to reverse this one yesterday, and I know it'll be difficult. Still on game_1, I already know which "opcodes" I need but I can't "generate" it. Maybe I should find another permutation. Does the password need to be printable ? Is there multiple password that validate this crackme ? Anyway, REALLY cool crackme

4aca7f6c on 9:54 PM 02/11/2019: @s4r: I'm glad you're enjoying it! There is at least one printable password, but I can't guarantee there aren't other solutions (printable or otherwise). If you find something that works, it counts as a solution, printable or not. If you do come across a non-printable solution, I'd love to know about it! Also, I did try to put enough checks in the code to avoid things like segfaults, but if you hit an error, please let me know what input caused that, too. I downloaded your bitflip machine a couple of days ago, and I hope I have time to start looking at it soon. Looks like another interesting crackme.... I love this site.

4aca7f6c on 10:10 PM 02/15/2019: @s4r, just read your awesome write up! It does a great job of explaining things, especially your game 2 summary. Also, I was really surprised how you dealt with the encrypt_string; that was a really clever observation. Thanks for the solution!