Natas, gra CTF 8-11

Natas, gra CTF 8-11

NATAS8:

Link do strony: http://natas8.natas.labs.overthewire.org/index.php
Login: natas8, password: DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe

Podglądamy kod strony,

Mamy zatem zakodowaną zmienną $encodedSecret = „3d3d516343746d4d6d6c315669563362”, która jest porównywana z zakodowanym hasłem przy pomocy funkcji bin2hex(strrev(base64_encode($secret))); Funkcje te są odwracalne można zatem odkodować zmienną $encodedSecret. Istnieje wiele stron w internecie, gdzie można odkodować te dane, natomiast ja napiszę kod w php aby odkodować te dane:

Wynikiem jest ciąg oubWYf2kBq
Wpisany w pole input powoduje pokazanie hasła do kolejnego poziomu, Access granted. The password for natas9 is W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

NATAS9:

Link do strony: http://natas9.natas.labs.overthewire.org/
Login: natas9 , password: W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

Strona posiada pole do wyszukiwania, sprawdźmy kod strony:

Zgodnie z zapisem w kodzie realizowana jest funkcja grep -i $key dictionary.txt, nie jest natomiast nigdzie oczyszczana wartość wpisywanego parametru, zatem sprawdźmy czy możemy tego nadużyć:
1; cat /etc/natas_webpass/natas9

Warto tutaj opisać co tak naprawdę zostało zrobione. System wykonał kolejno dwa polecenia: grep -i 1 dictionary.txt; cat /etc/natas_webpass/natas9
Warto jeszcze zaznaczyć, że ścieżka do hasła została wykorzystana na podstawie schematu z zadania nr 7

Hasło do poziomu 10 to ciąg nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

NATAS10:

Link do strony: http://natas10.natas.labs.overthewire.org/
Login: natas10, password: nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

Sprawdzamy kod strony:

Zadanie jest podobne do poziomu 9, natomiast programista wykorzystuje funkcję preg_match(’/[;|&]/’,$key), która jest zabezpieczeniem przed sztuczką z poprzedniego poziomu.

Skoro nie można dodać kolejnego polecenia to należy wykorzystać już istniejące, zatem wykorzystajmy właściwość polecenia grep, które może przyjmować kilka parametrów w postaci kilku plików.

Omówienie:
grep – polecenie linuksa do wyszukiwania danych w pliku,
-i – opcja odpowiedzialna za wyłączenie rozróżniania małych i dużych liter,
u /etc/natas_webpass/natas11 – to wartość do wpisania w pole tekstowe.

Hasło do poziomu 11 to U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

NATAS11:

Link do strony: http://natas11.natas.labs.overthewire.org/
Login: natas11, password: U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

Sprawdźmy kod strony:

W kodzie strony zastosowane jest ciastko, które jest kodowane funkcją XOR. Jego jawna wartość wynosi: $defaultdata = array( „showpassword”=>”no”, „bgcolor”=>”#ffffff”); Zaszyfrowana wartość wynosi natomiast: ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=
Funkcja szyfrująca XOR posiada następujące właściwości:
daneJawne xor klucz = daneZaszyfrowane oraz daneZaszyfrowane xor daneJawne = klucz, należy zatem napisać kod, który obliczy klucz potrzebny do ponownego zaszyfrowania danych, które będą posiadały wartość „yes” na parametrze showpassword.

Wynikiem skryptu php, który wykonałem na stronie http://sandbox.onlinephpfunctions.com jest następujący ciąg znaków:
qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq
Klucz wynosi zatem qw8J i powtarza się przez cały ciąg. Pora teraz na skrypt, który zamieni nowe jawne ciastko na zaszyfrowany ciąg

Wynikiem skryptu jest nowe ciastko, które należy podmienić:
ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK

Wynikiem jest kod do 12 poziomu:

1 komentarz

Howdy! Would you mind if I share your blog with my facebook group?
There’s a lot of folks that I think would really enjoy your content.
Please let me know. Many thanks

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.