Fuzzing avec PyDbg : format string

1. Introduction

Le but est ici aussi de réécrire des données pour contrôler le flux d’exécution afin d’augmenter nos privilèges.

Ce type de faille vient aussi d’erreurs de programmation qui apparemment n’engendrent pas de risque de sécurité.

Le format string - ou format de chaîne - est issu des fonctions de type printf et de tous ses dérivés qui sont mal utilisés.

Nous allons dans un premier temps étudier la fonction printf et ses arguments pour comprendre la faille pour ensuite pouvoir l’exploiter.

printf(’’votre choix: %d\n, choix_user);

  • %d : sert à afficher choix_user au format décimal

  • %u : décimal non signé

  • %x : hexadécimal

  • %s : chaîne de caractères

  • %n : stocke le nombre de caractères écrits par la fonction printf

  • %n : mot mémoire

  • %hn : "short" (16 bits)

  • %hhn : "char" (8 bits)

Quand l’utilisateur entre le paramètre %x et que celui-ci est passé en argument de la fonction printf(), la représentation hexadécimale d’un mot de 4 octets de la pile est affichée (par exemple 0xbfe3b024).

Ce paramètre peut être utilisé pour examiner la mémoire.

On pourrait utiliser d’autres paramètres tels que %s ou %n pour lire des chaînes de caractères ou pour aller écrire en mémoire.

C’est ce type de faille que nous...

couv_EP2HAFO.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Fuzzing avec Scapy
Suivant
Sulley