User Tools

Site Tools


integer_overflow

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
integer_overflow [2023/12/07 15:30] kresimirinteger_overflow [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 2: Line 2:
  
 Do integer overflow-a dolazi kada se pokuša pohraniti vrijednost u varijablu koja je veća od maksimalno dopuštene. Do integer overflow-a dolazi kada se pokuša pohraniti vrijednost u varijablu koja je veća od maksimalno dopuštene.
-Sve numeričke vrijednosti tokom izvođenja operacija u kojima su oni operandi sačuvane su u registrima.+Sve numeričke vrijednosti tijekom izvođenja operacija u kojima su oni operandi sačuvane su u registrima.
 U današnje vrijeme to su najčešće 64 bitni registri. U današnje vrijeme to su najčešće 64 bitni registri.
  
Line 19: Line 19:
  
   *U unsigned notaciji: [0, 255]   *U unsigned notaciji: [0, 255]
-  *U signed notaciji : [-128, 127]+  *U signed notaciji: [-128, 127]
  
 Najveća vrijednost koju ona može sadržati u sebi jest broj 1111 1111(2) Najveća vrijednost koju ona može sadržati u sebi jest broj 1111 1111(2)
-S obzirom da su svi numerički operandi nalaze u registru (npr. 64 bitnom) zapis vrijednosti varijable a (recimo broj 255) +S obzirom na to da su svi numerički operandi nalaze u registru (npr. 64 bitnom) zapis vrijednosti varijable a (recimo broj 255) 
-u registru koji sadržu njenu vrijednost biti će : 00000...1111 1111(2) gdje je broj nula 64-8 = 56.+u registru koji sadržu njenu vrijednost bit će : 00000...1111 1111(2) gdje je broj nula 64-8 = 56.
  
 Kada bismo tom registru dodali vrijednost 1, zapis bi izgledao ovako: 0000....1 0000 0000(2), što bi značilo da se vrijednost Kada bismo tom registru dodali vrijednost 1, zapis bi izgledao ovako: 0000....1 0000 0000(2), što bi značilo da se vrijednost
Line 32: Line 32:
 Sklopovlje za zbrajanje registara interno koristi tzv. carry flag (rflags/eflags/status registra) Sklopovlje za zbrajanje registara interno koristi tzv. carry flag (rflags/eflags/status registra)
 To znači da kada se registar preplavi (odnosno upiše vrijednost veća od 2^64) on ispravlja svoj sadržaj To znači da kada se registar preplavi (odnosno upiše vrijednost veća od 2^64) on ispravlja svoj sadržaj
-(odnosno prikazuje upisanu vrijednost % 2^64 gdje je % operacija modulo-ostatak) i postavlja postavlja carry flag.+(odnosno prikazuje upisanu vrijednost % 2^64 gdje je % operacija modulo-ostatak) i postavlja carry flag.
 Kada bi se taj registar dalje koristio za operacije bile bi prikazane vrijednost manje od 2^64. Kada bi se taj registar dalje koristio za operacije bile bi prikazane vrijednost manje od 2^64.
  
 ====Tajni chat==== ====Tajni chat====
 +
 +===Opis zadatka:===
 +
 +[[https://platforma.hacknite.hr/challenges#Tajni%20chat-42]]
 +
 +Ivan je skeniranjem interneta naišao na ovaj tajni chat. Zaista mu se želi pridružiti, no ne može se registrirati. Možeš li mu pomoći?
 +
 +Spoji se na program uz pomoć naredbe telnet (ako koristiš Windows) ili naredbe netcat (ako koristiš Linux):
 +
 +    telnet chal.platforma.hacknite.hr 8084
 +    
 +    netcat chal.platforma.hacknite.hr 8084
 +
 +===Rješenje:===
  
 Zastavica će se ispisati ako vrijedi uvjet (status->odobren && status->moze_citati_flag). Zastavica će se ispisati ako vrijedi uvjet (status->odobren && status->moze_citati_flag).
Line 49: Line 63:
 Također postavljan je uvjet na donju granicu broja pozivatelja: Također postavljan je uvjet na donju granicu broja pozivatelja:
  if(broj_pozivatelja > 0) //Dakle broj pozivatelja ne smije biti negativan  if(broj_pozivatelja > 0) //Dakle broj pozivatelja ne smije biti negativan
-Potrebno je napraviti overflow na način da iteracija omogućuje veći ispis po gomili od veličine popis_pozivatelja:+Potrebno je napraviti overflow tako da iteracija omogućuje veći ispis po gomili od veličine popis_pozivatelja:
  long long broj_pozivatelja; //qword (8 bajtova/64 bita)  long long broj_pozivatelja; //qword (8 bajtova/64 bita)
  
integer_overflow.1701963029.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki