hacktricks/pentesting-web/integer-overflow.md
2024-02-11 02:13:58 +00:00

4.7 KiB

Kuzidiwa kwa Nambari ya Mzunguko

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

{% tabs %} {% tab title="Rust" %}

fn main() {

let mut quantity = 2147483647;

let (mul_result, _) = i32::overflowing_mul(32767, quantity);
let (add_result, _) = i32::overflowing_add(1, quantity);

println!("{}", mul_result);
println!("{}", add_result);
}

{% endtab %}

{% tab title="Swahili" %}

Integer Overflow

Kuzidi kwa nambari ni hali ambapo nambari inazidi ukubwa wa kikomo kilichowekwa kwa aina ya data. Katika programu za C, kuzidi kwa nambari kunaweza kusababisha matokeo yasiyotarajiwa na hatari kwa usalama.

Kwa mfano, ikiwa tuna aina ya data ya int ambayo ina ukubwa wa 4 baiti, inaweza kuhifadhi nambari kutoka -2,147,483,648 hadi 2,147,483,647. Ikiwa tunajaribu kuongeza 1 kwa nambari ya juu zaidi, itasababisha kuzidi kwa nambari na kurejea kwa nambari ya chini zaidi, -2,147,483,648.

Katika muktadha wa usalama wa wavuti, kuzidi kwa nambari inaweza kutumiwa na wadukuzi kufanya mashambulizi kama vile kubadilisha thamani ya kumbukumbu, kusababisha kukwama kwa programu, au hata kutekeleza msimbo mbaya.

Kwa hiyo, ni muhimu kwa wapima vipimo kuhakikisha kuwa mipaka ya aina ya data inaheshimiwa na kuepuka kuzidi kwa nambari. Hii inaweza kufanywa kwa kuchunguza mipaka ya aina ya data na kuhakikisha kuwa operesheni za arithmetiki zinazofanywa hazisababishi kuzidi kwa nambari.

Kwa mfano, badala ya kutumia operesheni ya kuongeza moja kwa moja, unaweza kutumia operesheni ya kulinganisha kwanza ili kuhakikisha kuwa kuzidi kwa nambari haitatokea. Pia, unaweza kutumia aina za data zenye ukubwa mkubwa zaidi kama long au long long ili kuepuka kuzidi kwa nambari.

Kwa kumalizia, kuzidi kwa nambari ni hatari kwa usalama na inaweza kutumiwa na wadukuzi kufanya mashambulizi. Ni muhimu kwa wapima vipimo kuhakikisha kuwa mipaka ya aina ya data inaheshimiwa na kuepuka kuzidi kwa nambari kwa kufanya ukaguzi sahihi na kutumia aina za data sahihi.

#include <stdio.h>
#include <limits.h>

int main() {
int a = INT_MAX;
int b = 0;
int c = 0;

b = a * 100;
c = a + 1;

printf("%d\n", INT_MAX);
printf("%d\n", b);
printf("%d\n", c);
return 0;
}

{% endtab %} {% endtabs %}

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!