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)
Katika msingi wa integer overflow kuna kikomo kinachowekwa na ukubwa wa aina za data katika programu za kompyuta na ufafanuzi wa data.
Kwa mfano, 8-bit unsigned integer inaweza kuwakilisha thamani kutoka 0 hadi 255. Ikiwa unajaribu kuhifadhi thamani 256 katika 8-bit unsigned integer, inarudi nyuma hadi 0 kutokana na kikomo cha uwezo wake wa kuhifadhi. Vivyo hivyo, kwa 16-bit unsigned integer, ambayo inaweza kushikilia thamani kutoka 0 hadi 65,535, kuongeza 1 kwa 65,535 kutarudisha thamani hiyo hadi 0.
Zaidi ya hayo, 8-bit signed integer inaweza kuwakilisha thamani kutoka -128 hadi 127. Hii ni kwa sababu bit moja inatumika kuwakilisha ishara (chanya au hasi), ikiacha bit 7 kuwakilisha ukubwa. Nambari hasi zaidi inawakilishwa kama -128 (binary 10000000
), na nambari chanya zaidi ni 127 (binary 01111111
).
Kwa uwezekano wa web vulnerabilities ni ya kuvutia sana kujua thamani za juu zinazoungwa mkono:
Matokeo yaliyochapishwa yatakuwa 0 kwani tumepita mipaka ya char:
Fikiria hali ambapo nambari iliyo na ishara inasomwa kutoka kwa ingizo la mtumiaji na kisha kutumika katika muktadha ambao unait treating kama nambari isiyo na ishara, bila uthibitisho sahihi:
Katika mfano huu, ikiwa mtumiaji anaingiza nambari hasi, itatafsiriwa kama nambari kubwa isiyo na alama kutokana na jinsi thamani za binary zinavyotafsiriwa, ambayo inaweza kusababisha tabia isiyotarajiwa.
Ni 1B pekee inayotumika kuhifadhi ukubwa wa nenosiri hivyo inawezekana kuijaza na kuifanya ifikirie kuwa urefu wake ni 4 wakati kwa kweli ni 260 ili kupita ulinzi wa ukaguzi wa urefu
Kutolewa kwa nambari kadhaa pata kutumia z3 nambari mpya ambayo ikizidishwa na ya kwanza itatoa ya pili:
Ni 1B pekee inayotumika kuhifadhi ukubwa wa nenosiri hivyo inawezekana kuijaza na kuifanya ifikirie kuwa urefu wake ni 4 wakati kwa kweli ni 260 ili kupita ulinzi wa ukaguzi wa urefu na kuandika kwenye stack kiambatisho kinachofuata cha ndani na kupita ulinzi wote
Hii haiwezi kubadilika katika ARM64 kama unavyoona katika hiki chapisho la blog.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)