Root Me: Cracking: ELF – 0 protecție & ELF – x86 Basic
- mai puțin de 1 minute de citit
- 1 imagine
Disponibil și în English
Tocmai am descoperit acest site uimitor, care oferă o mare varietate de provocări.
Iată soluția mea pentru prima provocare. Aceasta este extrem de simplă, trebuie doar să acorzi atenție codului assembly:

Observă că parola este în text clar și este încărcată în [ebp+s2].
[ebp+s1] este transmis către [esp] și este un pointer către funcția getString. Am presupus doar că funcția citește un șir de la stdin și îl pune în [ebp+s1].
Șirul de la stdin este pus în [esp], iar parola în text clar în [esp+4], și ambele sunt transmise către _strcmp. Apoi vedem că [ebp+s1] este comparat cu [ebp+s2]. Cunoaștem deja ambele șiruri. Deci parola este „123456789”.
Pentru a executa binarul, am pornit o mașină virtuală Ubuntu de 32 de biți folosind Valgrind și următorul Valgrindfile:
[code]
Vagrant.configure(“2”) do |config|
config.vm.box = “ubuntu/trusty32”
end
[/code]
După ce mă conectez prin ssh la mașina valgrind, fac cd în /valgrind și execut binarul. Directorul /valgrind ar trebui să conțină fișierele din directorul în care se află Valgrindfile.
A doua provocare are o soluție asemănătoare:
mov [ebp+username], offset aJohn ; “john”
mov [ebp+pass], offset aTheRipper ; “the ripper”
Mulțumesc că ai citit!