integer_overflow
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| integer_overflow [2023/12/07 15:43] – kresimir | integer_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 | + | Sve numeričke vrijednosti |
| 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 |
| - | u registru koji sadržu njenu vrijednost | + | u registru koji sadržu njenu vrijednost |
| 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/ | Sklopovlje za zbrajanje registara interno koristi tzv. carry flag (rflags/ | ||
| 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 | + | (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, | Ivan je skeniranjem interneta naišao na ovaj tajni chat. Zaista mu se želi pridružiti, | ||
| - | Spoji se na program pomoću naredbe telnet (ako koristiš Windows) ili naredbe netcat (ako koristiš Linux): | + | Spoji se na program |
| 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 | + | Potrebno je napraviti overflow |
| long long broj_pozivatelja; | long long broj_pozivatelja; | ||
integer_overflow.1701963811.txt.gz · Last modified: 2025/12/01 11:40 (external edit)