Integer Overflow
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
U srcu integer overflow je ograničenje koje nameću veličine tipova podataka u programiranju i tumačenje podataka.
Na primer, 8-bitni bezpotpisni ceo broj može predstavljati vrednosti od 0 do 255. Ako pokušate da sačuvate vrednost 256 u 8-bitnom bezpotpisnom celom broju, ona se vraća na 0 zbog ograničenja njegove kapaciteta skladištenja. Slično tome, za 16-bitni bezpotpisni ceo broj, koji može da drži vrednosti od 0 do 65,535, dodavanje 1 na 65,535 će vratiti vrednost nazad na 0.
Štaviše, 8-bitni potpisani ceo broj može predstavljati vrednosti od -128 do 127. To je zato što se jedan bit koristi za predstavljanje znaka (pozitivan ili negativan), ostavljajući 7 bita za predstavljanje magnitude. Najnegativniji broj se predstavlja kao -128 (binarno 10000000
), a najpozitivniji broj je 127 (binarno 01111111
).
Za potencijalne web vulnerabilities veoma je zanimljivo znati maksimalne podržane vrednosti:
Ispisani rezultat će biti 0 jer smo preli u char:
Razmotrite situaciju u kojoj se potpisani ceo broj čita iz korisničkog unosa i zatim se koristi u kontekstu koji ga tretira kao nep potpisani ceo broj, bez pravilne validacije:
U ovom primeru, ako korisnik unese negativan broj, biće interpretiran kao veliki nesigned integer zbog načina na koji se binarne vrednosti interpretiraju, što može dovesti do neočekivanog ponašanja.
Samo 1B se koristi za čuvanje veličine lozinke, tako da je moguće prepuniti je i naterati je da misli da je dužina 4 dok je zapravo 260 kako bi se zaobišla zaštita provere dužine
Dati nekoliko brojeva, pronaći koristeći z3 novi broj koji pomnožen sa prvim će dati drugi:
Samo 1B se koristi za čuvanje veličine lozinke, tako da je moguće prepuniti je i naterati je da misli da je dužina 4 dok je zapravo 260 kako bi se zaobišla zaštita provere dužine i prepisala u steku sledeća lokalna promenljiva i zaobišla obe zaštite
Ovo se ne menja u ARM64 kao što možete videti u ovom blog postu.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)