
V tomto článku vyriešime 25. úlohu z webu .
Organizačné informácieŠpeciálne pre tých, ktorí chcú objavovať nové informácie a rozvíjať sa v akejkoľvek oblasti informačnej a počítačovej bezpečnosti, budem písať a rozprávať o nasledujúcich kategóriách:
- PWN;
- kryptografia (Crypto);
- sieťové technológie (Network);
- reverzné inžinierstvo (Reverse Engineering);
- steganografia (Stegano);
- hľadanie a využívanie WEB zraniteľností.
Navyše sa podelím o svoje skúsenosti v oblasti počítačovej kriminalistiky, analýze malvéru a firmvéru, útokoch na bezdrôtové siete a lokálne výpočtové siete, vykonávaní penetračných testov a písaní exploitov.
Aby ste sa mohli dozvedať o nových článkoch, softvéri a iných informáciách, vytvoril som a v oblasti IKT. Takisto vaše osobné požiadavky, otázky, návrhy a odporúčania .
Všetky informácie sú poskytované výlučne na vzdelávacie účely. Autor tohto dokumentu nenesie žiadnu zodpovednosť za akékoľvek škody spôsobené komukoľvek v dôsledku využívania poznatkov a metód získaných štúdiom tohto dokumentu.
Riešenie úlohy otp
Pokračujeme druhou časťou. Povieme hneď, že je náročnejšia ako prvá, ale tentoraz nám nezasielajú zdrojový kód programu. Nezabúdajme na diskusiu tu (https://t.me/RalfHackerPublicChat) a tu (https://t.me/RalfHackerChannel). Začneme.
Klikneme na ikonu s popisom otp. Dostaneme adresu a port na pripojenie.

Pripojíme sa a popozeráme sa na serveri.

Flag, ktorý nemôžeme prečítať, program a jeho zdrojový kód. Pozrime sa na zdrojový kód.

Rozoberieme ho. Program prijíma ako argument heslo.

Ďalej sa do premennej otp uložia náhodné 16 bajty.

V priečinku tmp sa vytvorí súbor so случайným názvom (prvých 8 bajtov otp) a do neho sa zapíšu náhodné 8 bajtov (druhých 8 bajtov otp).

Je nejakým spôsobom prečítaná hodnota z vytvoreného súboru a porovnáva sa s zadaným heslom.

Tu sa nachádza zraniteľnosť. Týka sa medzičasu uloženia generovaného čísla do súboru. Môžeme obmedziť veľkosť súboru, napríklad na 0, takže pri zápise a čítaní s heslom sa bude porovnávať 0. Môžeme to urobiť takto.
# ulimit -f 0 ![]()
Teraz spustíme program.
![]()
Získavame chybu. Nič sa nedeje, dá sa spracovať pomocou toho istého Pythona.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('.\/otp 0')" ![]()
Získavame vlajku a jednoduchých 100 bodov. A pokračujeme: v nasledujúcom článku sa dotkneme Webu. Môžete sa k nám pridať na .
Zdroj: habr.com
