
În acest articol, vom rezolva exercițiul 25 de pe site .
Informații organizaționaleSpecial pentru cei care doresc să învețe ceva nou și să se dezvolte în oricare dintre domeniile securității informației și a calculatoarelor, voi scrie și povesti despre următoarele categorii:
- PWN;
- criptografie (Crypto);
- tehnologii de rețea (Network);
- inginerie inversă (Reverse Engineering);
- steganografie (Stegano);
- căutarea și exploatarea vulnerabilităților WEB.
Pe lângă asta, voi împărtăși experiența mea în criminalistica computerizată, analiza malware-ului și firmwar-ului, atacurile asupra rețelelor wireless și a rețelelor locale, desfășurarea testelor de penetrare și scrierea exploiturilor.
Pentru ca voi să puteți afla despre articole noi, software și alte informații, am creat și în domeniul IiiKB. De asemenea, solicitările, întrebările, sugestiile și recomandările voastre .
Toate informațiile sunt prezentate exclusiv în scopuri educaționale. Autorul acestui document nu își asumă nicio responsabilitate pentru daunele cauzate oricărei persoane ca urmare a utilizării cunoștințelor și metodelor obținute din studierea acestui document.
Soluția exercițiului otp
Continuăm cu a doua secțiune. Voi spune de la început că este mai dificilă decât prima, dar de data aceasta nu ne oferă codul sursă al programului. Nu uitați de discuția aici(https://t.me/RalfHackerPublicChat) și aici (https://t.me/RalfHackerChannel). Să începem.
Facem clic pe pictograma cu denumirea otp. Ni se oferă o adresă și un port pentru conectare.

Ne conectăm și ne uităm în server.

Steagul pe care nu-l putem citi, programul și codul său sursă. Să ne uităm la sursa acestuia.

Să-l disecăm. Programul primește ca argument o parolă.

Apoi, în variabila otp se salvează 16 bytes aleatorii.

În folderul tmp se creează un fișier cu un nume aleatoriu (primele 8 bytes otp) și în el se scriu 8 bytes aleatorii (următoarele 8 bytes otp).

Dintr-un motiv anume, din fișierul creat se citește o valoare și se compară cu parola introdusă.

Aici se află vulnerabilitatea. Aceasta constă în salvarea intermediară a numărului generat în fișier. Putem limita dimensiunea fișierului, de exemplu, la 0, astfel încât, la scrierea și citirea cu parola, se va compara 0. Se poate face astfel.
# ulimit -f 0 ![]()
Acum să rulăm programul.
![]()
Obținem o eroare. Nu-i nimic, pentru că poate fi gestionată cu același Python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')" ![]()
Obținem steagul și cele 100 de puncte ușoare. Și continuăm: în următorul articol ne vom axa pe Web. Puteți să vă alăturați nouă în .
Sursa: habr.com
