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:43] 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.
  
Line 43: Line 43:
 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? 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 pomoćnaredbe telnet (ako koristiš Windows) ili naredbe netcat (ako koristiš Linux):+Spoji se na program uz pomoć naredbe telnet (ako koristiš Windows) ili naredbe netcat (ako koristiš Linux):
  
     telnet chal.platforma.hacknite.hr 8084     telnet chal.platforma.hacknite.hr 8084
Line 63: 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.1701963811.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki