I denne artikkelen skal vi løse den 25. oppgaven fra nettstedet
OrganisasjonsinformasjonSpesielt for de som ønsker å lære noe nytt og utvikle seg innen ethvert område av informasjon og datasikkerhet, vil jeg skrive og snakke om følgende kategorier:
- PWN;
- kryptografi (Crypto);
- nettverksteknologier (nettverk);
- revers (Reverse Engineering);
- steganografi (Stegano);
- søk og utnyttelse av WEB-sårbarheter.
I tillegg til dette vil jeg dele min erfaring innen dataetterforskning, malware- og fastvareanalyse, angrep på trådløse nettverk og lokalnettverk, gjennomføring av pentests og skriving av utnyttelser.
For å hjelpe deg med å holde deg oppdatert med nye artikler, programvare og annen informasjon, har jeg laget
All informasjon presenteres kun for pedagogiske formål. Forfatteren av dette dokumentet påtar seg ikke noe ansvar for skader forårsaket av noen som følge av bruk av kunnskap og teknikker som er oppnådd ved å studere dette dokumentet.
Løser otp-oppgaven
La oss fortsette med den andre delen. Jeg vil si med en gang at det er mer komplisert enn den første, men denne gangen gir de ikke kildekoden til programmet. Ikke glem diskusjonen her (https://t.me/RalfHackerPublicChat) og her (https://t.me/RalfHackerChannel). La oss begynne.
Klikk på ikonet med signaturen otp. Vi får en adresse og port å koble til.
Vi kobler til og ser oss rundt på serveren.
Et flagg som vi ikke kan lese, et program og dets kildekode. La oss se på kilden.
La oss ordne opp i det. Programmet tar et passord som et argument.
Deretter lagres tilfeldige 16 byte i otp-variabelen.
En fil med et tilfeldig navn opprettes i tmp-mappen (de første 8 bytene er otp) og tilfeldige 8 byte skrives til den (de andre 8 bytene er otp).
Av en eller annen grunn blir verdien av den opprettede filen lest og sammenlignet med det angitte passordet.
Det er her sårbarheten kommer inn. Det består av å lagre det genererte nummeret mellomværende i en fil. Vi kan begrense filstørrelsen f.eks til 0, så ved skriving og lesing vil 0 sammenlignes med passordet Dette kan gjøres slik.
# ulimit -f 0
La oss nå kjøre programmet.
Vi får en feil. Det spiller ingen rolle, det kan behandles med samme python.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Vi får flagget og våre enkle 100 poeng. Og vi fortsetter: i neste artikkel skal vi berøre nettet. Du kan bli med oss på
Kilde: www.habr.com