hmmm smol pp moment ! now we go open it in a disassembler
lets read the main function! first it does its regular job of loading the stack and moving argc and argv to the registers then it checks weither the value of argc is == 2 as it takes one 1 argument vector shown in img1. If it fails the condition then it jumps to the address 0x11bd. less have a look at it.
brrr….as we can see it just prints out the string “Umm…no…” now lets see what happens if it matches the condition i.e if we pass something in the argument vector.
okkkkkkkk wait i am feeling cold… i am back. Back to the whatever we are doing. We can see that the string that we entered is being passed to a function call fun.00011dc. Now lets see what that function does to our baby stringwqnwdn. uhhghhghg my string ;-;-;-;!!
brrrr this shit is too confusing lets decompile it else ill die trying you dont want me to die right?….right? do you want me to die do you want me to DIE??? ok
much better but we still need to do some cleanups…wait here I just changed the variable names to something readable brrr wtf is uVar3 and var4h._4_4
before we do anything else lets first see what that 0x4050 holds for us. shshbh “FZGSVdzohWNAAGSCW^z_HMf]THbJWUnT_URK” som crazy string. They are first comparing the length of that crazy string to the length of our baby string. And if the condition matches we enter inside the loop.
lets make it moe simple [note: asuming crazy = 0x4050]
|
|
j stores the length of that crazy string. Then inside the for loop we have an if with some condition. char at index i of crazy xor j xor 55 is != char at index i of our baby string. waaaaaaw now we know whats actually happening inside the hood. We can just write a script to solve it
hmmm BIG pp moment !! we got the flag