Cześć,
cieszę się że Ci się zadanie (i artykuł) podobało. Jeśli chodzi o
Program nie sprawdza wszystkich błędów i w wielu miejscach poszedłem na skróty, dodatkowo mnóstwo zaszytych w nim magic numbers.
To i tak Twój program jest dużo ładniejszy od naszego (ale pisałeś go pod mniejszą presją :P).
A odnośnie:
Nie jest to trywialne zadanie, nawet z pomocą artykułu musiałem się domyślić paru rzeczy.
To mogłeś pisać, chętnie bym pomógł (artykuł był trochę skrótowy, bo jak na strefę CTF i dak długi artykuł nam wyszedł).
A wracając do głównego pytania - spojrzę dokładnie później, ale to chyba coś związanego ze złym stanem początkowym aplikacji:
> u
hello cruel world, how are you?
gib pin pls?
5129
Well done, Now �o find Redford, he m�y have a beer for you;] oh and a flag is: DrgnS{CustomVMSarePhunReversingWithoutCoDeI�EvenFunnier}
>
> u
gib pin pls?
5444
��p�e����b�'z+[����D}J�����xIp�{#����Ulb o�xyFx��o��/ ����Auk��� /W�g0.<u�3C�H
Փ��*)��q H \Ju���x�?
&�!k�Ls#Z�z��E����o4t.�[�8��v >
> u
gib pin pls?
5129
Well done, Now go find Redf1rd, he may have a beer for you;] oh and a flag is: DrgnS{CustomVMSarePhunReversingWithoutCoDeI�EvenFunnier}
To drugie wygląda prawie jak poprawne dane, poza tym że jest Redf1rd
zamiast Redford
. Natomiast jeśli chodzi o "krzak" w "CoDeIsEven", to... nie jestem pewien, bo u nas wyskoczyło tak samo - być może drobny błąd w ciphertexcie, bo dziwne żeby wszystko działało dobrze poza tym jednym znakiem.
W artykule napisaliście że "łamanie" programu poprzez szukanie pinu trwało kilka godzin, dlaczego tak długo? Mój program na sprawdzenie wszystkich 9000 kombinacji potrzebuje kilka sekund. Niestety, otrzymana przeze mnie flaga różni się od Waszej:
Z tymi kilkoma godzinami to trochę przesadziliśmy (poszliśmy spać po uruchomieniu, więc pewni nie jesteśmy). Ale nasz program działał dużo wolniej z dwóch powodów:
- za każdym razem uruchamialiśmy VM od początku (więc dla kazdego pinu tworzyliśmy nowy proces pythona)
- python sam z siebie też demonem szybkości nie jest.