hacktricks/pentesting-web/integer-overflow.md

4.3 KiB

Débordement d'entier

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

{% 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="C" %}

Débordement d'entier

Lorsqu'un entier dépasse sa valeur maximale, il peut entraîner un débordement d'entier. Cela peut être exploité pour exécuter des attaques, telles que l'exécution de code arbitraire ou la modification de variables critiques. Il est essentiel de vérifier et de gérer correctement les débordements d'entiers dans le code pour éviter les vulnérabilités potentielles.

Exemple de débordement d'entier en C

#include <stdio.h>

int main() {
    int a = 2147483647; // Valeur maximale d'un int
    a = a + 1;
    
    printf("La valeur de a est : %d\n", a);
    
    return 0;
}

Dans cet exemple, en ajoutant 1 à la valeur maximale d'un entier, cela provoque un débordement d'entier, ce qui peut entraîner un comportement imprévisible du programme.

{% endtab %}

#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 %}

☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥