Educational/cmp
Reversing
Let’s have a quick look with checksec
:
$ checksec cmp
[*] '/home/hag/ctf-equinor-22/Educational-cmp/cmp'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
Then we import the executable into ghidra
and have a look at the decompiled main
-method:
We see that we have a simple strcmp
that needs to succeed.
We could look up pw
in ghidra
, but we need to tell ghidra
to treat the pw
-pointer as a char
-array to see the string in clear text. I’m not very good in ghidra
so let’s look at a couple of other methods we can use.
Solving in gdb
Let’s load the executable in gdb
and set a breakpoint on the strcmp
-call:
$ gdb cmp
gef➤ disas main
Dump of assembler code for function main:
# ...abbreviated
0x00000000004013e1 <+92>: call 0x401216 <getPassword>
0x00000000004013e6 <+97>: lea rax,[rbp-0x20]
0x00000000004013ea <+101>: lea rsi,[rip+0x2c77]
0x00000000004013f1 <+108>: mov rdi,rax
0x00000000004013f4 <+111>: call 0x401120 <strcmp@plt>
0x00000000004013f9 <+116>: test eax,eax
# ...abbreviated
End of assembler dump.
gef➤ b *0x00000000004013f4
Breakpoint 1 at 0x4013f4
gef➤ r
Starting program: /home/hag/ctf-equinor-22/educational-cmp/cmp
Enter password to login!
> aaaaaaaaaaaaaaaaaaaaa
We get the follwing information when we hit the breakpoint:
As we can see, a simple breakpoint on the strcmp
-call let’s us easily see the strings that are compared in clear text. The password is LEAVEMEALONE
.
Solving with ltrace
Let’s run the program using ltrace ./cmp
:
$ ltrace ./cmp
printf("Enter password to login!\n> "Enter password to login!) = 27
fgets(> aaaaaaaaaaaaaaaaaaa
"aaaaaaaaaaaaaaaaaaa", 20, 0x7fd2905ba9a0) = 0x7ffd7aa7e6b0
strcspn("aaaaaaaaaaaaaaaaaaa", "\n") = 19
strlen("\222\350\201\210\233\340\205\237\222\342\216\233") = 12
strcmp("aaaaaaaaaaaaaaaaaaa", "LEAVEMEALONE") = 21
puts("Sorry, that is not correct!"Sorry, that is not correct!
) = 28
+++ exited (status 0) +++
Again, we can easily see the password in clear text.
Flag
$ ./cmp
Enter password to login!
> LEAVEMEALONE
EPT{228dea3beade02d907a77af1c622e18a}