User Tools

Site Tools


ret2libc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ret2libc [2023/12/07 15:28] kresimirret2libc [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 4: Line 4:
  
 ====Tajne čokolade==== ====Tajne čokolade====
 +
 +===Opis zadatka:===
 +
 +https://platforma.hacknite.hr/challenges#Tajne%20%C4%8Dokolade-96
 +
 +Ante neće uspjeti ostvariti dominaciju tržišta sladoleda bez savršenog recepta za čokoladu, što u konačnici znači da neće imati dovoljno novaca za najbolje novo računalo kojim bi mogao igrati RTX Minecraft na 4k rezoluciji i 144Hz.
 +
 +Ante je načuo da isti program koji je čuvao recept za sladoled od vanilije zapravo negdje čuva i recept za savršeni sladoled od čokolade. Preciznije, na istom računalu/poslužitelju se nalazi i taj dodatni recept kojega Ante traži, sakriven negdje na datotečnom sustavu u datoteci naziva flag2.
 +
 +Možeš li se spojiti na program, ostvariti pristup poslužitelju - tako da možeš izvršavati naredbe u ljusci (engl. shell) operacijskog sustava, tzv. remote code execution - te pronaći i taj recept čime bi osigurao da Ante u potpunosti dominira tržištem sladoleda?
 +
 +Podaci za spajanje i podaci o programu (izvorni kod i izvršna datoteka) su isti kao i u zadatku Tajne vanilije. Program je na poslužitelju pokrenut unutar Alpine Linux 3.16 containera (to ne bi trebalo bitno utjecati na rješavanje zadatka).
 +
 +===Rješenje:===
  
 Potrebno je napraviti sistemski poziv za pretraživanje datoteke "flag2" na udaljenom računalu. Potrebno je napraviti sistemski poziv za pretraživanje datoteke "flag2" na udaljenom računalu.
Line 16: Line 30:
  
 Unos stringa "/bin/sh" omogućen je kroz varijablu username ili password, ali se i nalazi unutar datoteke i bez njegovog unosa. Unos stringa "/bin/sh" omogućen je kroz varijablu username ili password, ali se i nalazi unutar datoteke i bez njegovog unosa.
-Rješenje će biti izvedeno uz pomoć već postojećeg stringa. Razlika će dakle biti u adresi koja sadrži "/bin/sh"Ukoliko  +Rješenje će biti izvedeno uz pomoć postojećeg stringa. Razlika će dakle biti u adresi koja sadrži "/bin/sh"Ako rješenje koristi username ili password varijablu, unutar payloada je potrebno izmijeniti adresu koja se prosljeđuje pozivu system na odgovarajući offset
-rješenje koristi username ili password varijablu, unutar payloada je potrebno izmjeniti adresu koja se prosljeđuje pozivu system na odgovarajući offset+
 odgovarajuće varijable. odgovarajuće varijable.
  
Line 45: Line 58:
 U rješenju će se koristiti adresa 0x4050d9. U rješenju će se koristiti adresa 0x4050d9.
  
-Zbog x64 calling konvencije pointer na adresu na kojoj se nalazi string "/bin/sh" biti će u registru rdi.+Zbog x64 calling konvencije pointer na adresu na kojoj se nalazi string "/bin/sh" bit će u registru rdi.
 To znači da kako bi se sistemski poziv system ispravno pozvao, prije samog poziva potrebno je postaviti To znači da kako bi se sistemski poziv system ispravno pozvao, prije samog poziva potrebno je postaviti
 željenu adresu u registar rdi.  željenu adresu u registar rdi. 
Line 55: Line 68:
 Kako bi se pronašla takva funkcija koriste se rop alati. U ovom primjeru korišteni alat je ROPGadget no postoje i brojni drugi (npr. Ropper, PWN tools...). Kako bi se pronašla takva funkcija koriste se rop alati. U ovom primjeru korišteni alat je ROPGadget no postoje i brojni drugi (npr. Ropper, PWN tools...).
  
-Nareba za pronalazak "write,what,where" rop-a jest (pomoćROPgadget):+Nareba za pronalazak "write,what,where" rop-a jest (uz pomoć ROPgadget):
  ROPGadget --silent --ropchain --binary main  ROPGadget --silent --ropchain --binary main
  
Line 76: Line 89:
  4. Prepisati povratnu adresu s adresom system poziva //0x4015b6 (adresa system poziva se može saznati s npr. disas system) --> ret;  4. Prepisati povratnu adresu s adresom system poziva //0x4015b6 (adresa system poziva se može saznati s npr. disas system) --> ret;
  
-Nakon uspješnog unosa sastavljenog payloada na udaljenom računalu biti će otvoren shell.+Nakon uspješnog unosa sastavljenog payloada na udaljenom računalu bit će otvoren shell.
  
 Napomena 1.:  Napomena 1.: 
-x64 calling konvencija zahtjeva da su povratne adrese poredane 16-bitnim modulom (stack allignment x64 calling convention)+x64 calling konvencija zahtjeva da su povratne adrese poredane sa 16-bitnim modulom (stack alignment x64 calling convention)
  
 Napomena 2.:  Napomena 2.:
ret2libc.1701962926.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki