Programista nr 50: Artykuł Confidence CTF 2016 - Blackbox

0

Poszukuję binarnego pliku programu na fikcyjną architekturę który został przedstawiony w artykule. Czy ktoś ma może link ? Chcę się pobawić samodzielnie - powtórzyć to co autorzy zrobili w artykule.

Szkoda że nie ma tego pliku w materiałach do artykułu na stronie programisty - w ogóle nie ma żadnych materiałów do wydania na stronie. Dlaczego ?

0

Załączam oryginalny plik. Miłej zabawy ;)

0

Dziękuje

0

Zainspirowany artykułem napisałem emulator w C. Muszę przyznać że bez artykułu nie dałbym rady. Nie jest to trywialne zadanie, nawet z pomocą artykułu musiałem się domyślić paru rzeczy.
Program nie sprawdza wszystkich błędów i w wielu miejscach poszedłem na skróty, dodatkowo mnóstwo zaszytych w nim magic numbers.

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:

Well done, Now �o find Redford, he m�y have a beer for you;] oh and a flag is: DrgnS{CustomVMSarePhunReversingWithoutCoDeI�EvenFunnier}

I przez tę pare znaczków niedrukowalnych (nie wiem skąd pochodzą) moja funkcja automatycznego łamania głupieje :/

W moim programie musi być jakiś błąd, niestety niestety nie wiem jaki. W załączniku źródła i makefile do kompilacji (program dla systemu linux).
Zapraszam do zapoznania się z moim programem, ewentualnie znalezieniem błędu.

Aby skompilować program trzeba ściągnąć zipa, rozpakować go do jednego folderu i wpisać make.

1

Materiał do artykułu został dodany w "Panelu Prenumeratora" i w dziale "Download", przepraszamy za to przeoczenie :)

W kwestiach merytorycznych na pewno pomocny będzie @msm.

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1