În acest articol vom rezolva a 25-a sarcină de pe site
informatii organizatoriceMai ales pentru cei care doresc să învețe ceva nou și să se dezvolte în orice domeniu al securității informaționale și informatice, voi scrie și voi vorbi despre următoarele categorii:
- PWN;
- criptografie (Crypto);
- tehnologii de rețea (Rețea);
- inversă (Inginerie inversă);
- steganografie (Stegano);
- căutarea și exploatarea vulnerabilităților WEB.
În plus, voi împărtăși experiența mea în criminalistica computerizată, analiză malware și firmware, atacuri asupra rețelelor wireless și rețelelor locale, desfășurarea de pentesturi și scrierea de exploit-uri.
Pentru a putea afla despre articole noi, software și alte informații, am creat
Toate informațiile sunt furnizate doar în scop educațional. Autorul acestui document nu își asumă nicio responsabilitate pentru orice daune cauzate cuiva ca urmare a utilizării cunoștințelor și metodelor obținute ca urmare a studierii acestui document.
Rezolvarea sarcinii otp
Să continuăm cu a doua secțiune. Voi spune imediat că este mai complicat decât primul, dar de data aceasta nu oferă codul sursă al programului. Nu uitați de discuția de aici (https://t.me/RalfHackerPublicChat) și de aici (https://t.me/RalfHackerChannel). Sa incepem.
Faceți clic pe pictograma cu semnătura otp. Ni se oferă o adresă și un port la care să ne conectăm.
Ne conectăm și ne uităm în jurul serverului.
Un steag pe care nu îl putem citi, un program și codul său sursă. Să ne uităm la sursă.
Să rezolvăm. Programul ia o parolă ca argument.
În continuare, 16 octeți aleatori sunt stocați în variabila otp.
Un fișier cu un nume aleatoriu este creat în folderul tmp (primii 8 octeți sunt otp) și se scriu în el 8 octeți aleatori (cei de-al doilea 8 octeți sunt otp).
Din anumite motive, valoarea fișierului creat este citită și comparată cu parola introdusă.
Aici intervine vulnerabilitatea. Constă în salvarea intermediară a numărului generat într-un fișier. Putem limita dimensiunea fișierului, de exemplu, la 0, apoi atunci când scrieți și citiți, 0 va fi comparat cu parola. Acest lucru se poate face astfel.
# ulimit -f 0
Acum să rulăm programul.
Primim o eroare. Nu contează, poate fi procesat folosind același python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Primim steagul și cele 100 de puncte. Și continuăm: în articolul următor vom atinge pe Web. Ne poți alătura la
Sursa: www.habr.com