Integer Overflow
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In die hart van 'n heelgetal oorloop is die beperking wat opgelê word deur die grootte van datatipes in rekenaarprogrammering en die interpretasie van die data.
Byvoorbeeld, 'n 8-bis ongetekende heelgetal kan waardes van 0 tot 255 voorstel. As jy probeer om die waarde 256 in 'n 8-bis ongetekende heelgetal te stoor, draai dit terug na 0 weens die beperking van sy stoor kapasiteit. Op soortgelyke wyse, vir 'n 16-bis ongetekende heelgetal, wat waardes van 0 tot 65,535 kan hou, sal die toevoeging van 1 aan 65,535 die waarde terugdraai na 0.
Boonop kan 'n 8-bis getekende heelgetal waardes van -128 tot 127 voorstel. Dit is omdat een bit gebruik word om die teken (positief of negatief) voor te stel, wat 7 bits laat om die grootte voor te stel. Die mees negatiewe getal word voorgestel as -128 (binêr 10000000
), en die mees positiewe getal is 127 (binêr 01111111
).
Vir potensiële web kwesbaarhede is dit baie interessant om die maksimum ondersteunde waardes te ken:
Die gedrukte resultaat sal 0 wees aangesien ons die char oorgeloop het:
Overweeg 'n situasie waar 'n getekende heelgetal van gebruikersinvoer gelees word en dan in 'n konteks gebruik word wat dit as 'n ongetekende heelgetal behandel, sonder behoorlike validasie:
In hierdie voorbeeld, as 'n gebruiker 'n negatiewe getal invoer, sal dit geïnterpreteer word as 'n groot ongetekende heelgetal weens die manier waarop binêre waardes geïnterpreteer word, wat moontlik tot onverwagte gedrag kan lei.
Slegs 1B word gebruik om die grootte van die wagwoord te stoor, so dit is moontlik om dit oor te loop en dit te laat dink dit is 'n lengte van 4 terwyl dit eintlik 260 is om die lengtekontrole beskerming te omseil.
Gegee 'n paar getalle, vind uit met behulp van z3 'n nuwe getal wat vermenigvuldig met die eerste een die tweede een sal gee:
Slegs 1B word gebruik om die grootte van die wagwoord te stoor, so dit is moontlik om dit oor te loop en dit te laat dink dit is 'n lengte van 4 terwyl dit eintlik 260 is om die lengtekontrole beskerming te omseil en die volgende plaaslike veranderlike in die stapel te oorskry en albei beskermings te omseil.
Dit verander nie in ARM64 nie soos jy kan sien in hierdie blogpos.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)