I denne artikel løser vi den 25. opgave fra siden
organisatoriske oplysningerIsær for dem, der ønsker at lære noget nyt og udvikle sig inden for ethvert område af information og computersikkerhed, vil jeg skrive og tale om følgende kategorier:
- PWN;
- kryptografi (Crypto);
- netværksteknologier (netværk);
- omvendt (Reverse Engineering);
- steganografi (Stegano);
- søgning og udnyttelse af WEB-sårbarheder.
Udover dette vil jeg dele min erfaring inden for computerforensik, malware- og firmwareanalyse, angreb på trådløse netværk og lokale netværk, udføre pentests og skrive exploits.
For at du kan finde ud af om nye artikler, software og anden information, har jeg oprettet
Alle oplysninger gives kun til uddannelsesformål. Forfatteren af dette dokument påtager sig intet ansvar for skader forårsaget af nogen som følge af brugen af den viden og de metoder, der er opnået som et resultat af at studere dette dokument.
Løsning af otp-opgaven
Lad os fortsætte med det andet afsnit. Jeg vil med det samme sige, at det er mere kompliceret end den første, men denne gang leverer de ikke kildekoden til programmet. Glem ikke diskussionen her (https://t.me/RalfHackerPublicChat) og her (https://t.me/RalfHackerChannel). Lad os begynde.
Klik på ikonet med signaturen otp. Vi får en adresse og port at forbinde til.
Vi forbinder og kigger rundt på serveren.
Et flag, som vi ikke kan læse, et program og dets kildekode. Lad os se på kilden.
Lad os ordne det. Programmet tager en adgangskode som et argument.
Dernæst gemmes tilfældige 16 bytes i otp-variablen.
En fil med et tilfældigt navn oprettes i tmp-mappen (de første 8 bytes er otp), og tilfældige 8 bytes skrives til den (de anden 8 bytes er otp).
Af en eller anden grund læses værdien af den oprettede fil og sammenlignes med den indtastede adgangskode.
Det er her, sårbarheden kommer ind. Det består i at gemme det genererede nummer i en fil. Vi kan begrænse filstørrelsen til fx 0, så vil der ved skrivning og læsning sammenlignes 0 med adgangskoden.Det kan gøres sådan.
# ulimit -f 0
Lad os nu køre programmet.
Vi får en fejl. Det er ligegyldigt, det kan behandles ved hjælp af den samme python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Vi får flaget og vores nemme 100 point. Og vi fortsætter: i den næste artikel vil vi berøre nettet. Du kan slutte dig til os kl
Kilde: www.habr.com