GDB

pour l'exploitation de binaire

Installation

  • GDB est installé par défaut sur Linux
  • Plugins utile
    • GDB-Peda (https://github.com/longld/peda)

Code analysé

 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, unsigned char** argv) {
   unsigned char data[100];
   puts("Quel est ton nom ?\n");
   gets(data);
   printf("Ton nom est %s. \n", data);
   return 0;
}

Commandes

  • start (démarre et arrête au début)

Commandes

  • x/19i main (affiche le code du main)

Commandes

  • Avancer dans le programme
    • si
      • prochaine instruction et entre dans les "call"
    • ​ni
      • ​prochaine instruction et n'entre pas dans les "call"
    • finish
      • continue jusqu'au prochain "ret"

Commandes

  • Point d'arrêt
    • b *0x00000000
      • ​Ajoute un point d'arrêt à 0x00000000
    • b main
      • ​Ajoute un point d'arrêt au début de la fonction "main"
    • ​d
      • ​Supprime tous les points d'arrêt
    • ​info b
      • ​Liste tous les points d'arrêt
    • ​c
      • ​Continue jusqu'au prochain point d'arrêt

Commandes

  • Affichage de données
    • p $eax
      • Affiche la valeur du registre eax
    • p main
      • Affiche l'adresse de la fonction main

Commandes

  • Affichage de données
    • x/abc 0x00000000
      • Affiche les données à l'adresse 0x00000000
      • a = Nombre d'élément à afficher
      • b = Largeur
        • w = 4 bytes, g = 8 bytes, b = 1 bytes
      • c = Type
        • i = Instruction (code)
        • x = Nombre (hexadécimal)
        • d = Nombre (entier)
      • Exemple :
        • x/8bx $rbp
        • x/25i main

Commandes

  • Information sur la stack
    • info frame

GDB

By Olivier Arteau

GDB

  • 1,234