THM: Compiled
Odkaz: TryHackMe Compiled
Našou úlohou je získať heslo. Dostaneme súbor bez prípony – Compiled. Prvý krok je vždy zistiť o aký typ súboru ide.
K tomu použijeme file.
#### strings – čitateľné reťazce
Príkaz strings extrahuje všetky čitateľné ASCII reťazce z binárky. Je to najrýchlejší spôsob ako zistiť čo binárka robí bez spustenia.
Čo vidíme? Niekoľko zaujímavých reťazcov:
• Password: – program žiada heslo od používateľa
• DoYouEven%sCTF – formátovací reťazec so %s – dopĺňa sa niečo dovnútra
• StringsIH a sForNoobH – fragmenty… ktoré budú relevantné
• Correct! / Try again! – program overuje správnosť vstupu
• scanf a strcmp – použité funkcie z libc
Používame scanf na čítanie vstupu a strcmp na porovnanie reťazcov – to je typický vzor overovania hesla v C.
#### Ghidra – dekompilujeme binárku
Reťazce nám dali dobrý prehľad, ale heslo vidíme len v kusoch. Otvoríme binárku v Ghidra (NSA open-source dekompilátor) a pozrieme sa na funkciu main.
Po importe a analýze nájdeme v Symbol Tree funkciu main a zobrazíme jej dekompilovaný kód:
Zaujímavá je časť kódu s funkcoi scanf kde vkladáme heslo. Vidíme že časť hesla je „DoYouEven“ a daľšia časť hesla je hodnota premennej %s.
V kóde vidíme dve porovnávacie funkcie „strcmp“ ktorá keď vracia 0 tak je výsledok zhodný.
Podľa tohto vidíme že náš reťazec je _init.
Poskladáme heslo a úloha vyriešená.