IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compréhension des exploits


Sujet :

C

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut Compréhension des exploits
    Bonjour a tous,
    voila en fait je lis depuis un moment plusieurs code source d'exploits, et j'arrive a peu pres à comprendre leur fonctionnement.
    en fait y a juste une chose que je n'arrive vraiment pas a comprendre et que j'aimerais que l'on m'explique. en début de chaque programme, il y a des déclaration de tableau comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char DoAction[] = 
    "\x3c\x03\x9b\x08\x00\x41\x41\x41\x41\x41\x41\x41\x41\x00\x40\x00"
    "\x42\x42\x42\x42\x42\x42\x42\x42\x00\x43\x43\x43\x43\x43\x43\x43"
    "\x43\x00\x44\x44\x44\x44\x44\x44\x44\x44\x00\x45\x45\x45\x45\x45"
    "\x45\x45\x45\x00\x46\x46\x46\x46\x46\x46\x46\x46\x00\x00";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    unsigned char head1[] = {
    0x01, 0x00, 0x09, 0x00, 0x00, 0x03, 0x52, 0x1F, 0x00, 0x00, 0x06, 0x00, 0x3D, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x85, 0x00,
    0xD0, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x08, 0x00, 0xFF, 0xFF,
    0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x23, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x1B, 0x00, 0x54, 0x4E, 0x50, 0x50, 0x14, 0x00, 0x20, 0x00,
    0xB8, 0x00, 0x32, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x4F, 0x00, 0x14, 0x00, 0x00, 0x00, 0x4D, 0x00,
    0x69, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x0A, 0x00, 0x54, 0x4E,
    0x50, 0x50, 0x00, 0x00, 0x02, 0x00, 0xF4, 0x03, 0x09, 0x00, 0x00, 0x00, 0x26, 0x06, 0x0F, 0x00,
    0x08, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x26, 0x06,
    0x0F, 0x00, 0x14, 0x00, 0x54, 0x4E, 0x50, 0x50, 0x04, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x00, 0x00,
    0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x02, 0xD0, 0x02, 0xC0, 0x03, 0x04, 0x00, 0x00, 0x00,
    0x04, 0x01, 0x0D, 0x00, 0x07, 0x00, 0x00, 0x00, 0xFC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00,
    0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xFA, 0x02,
    0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x22, 0x00, 0x04, 0x00, 0x00, 0x00,
    0x2D, 0x01, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
    0x1D, 0x06, 0x21, 0x00, 0xF0, 0x00, 0xD0, 0x02, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
    0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xFC, 0x02, 0x00, 0x00, 0xFF, 0xFF,
    0xFF, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00,
    0xF0, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xFA, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x10, 0x00,
    0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x16, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x47, 0x00,
    0x00, 0x00, 0x8F, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0xC1, 0x02, 0x00, 0x00, 0x08, 0x00,
    0x00, 0x00, 0x26, 0x06, 0x0F, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x0D, 0x00,
    0x00, 0x00, 0xFB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x03, 0x00,
    0x05, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x14, 0x02,
    0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00,
    0x26, 0x06, 0x09, 0x00, 0x16, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
    };
    enfin ils ont tous les même style et on retrouve ces déclarations de tableau. donc si quelqu'un pourrait m'expliquer ca serait sympa.
    merci par avance.
    Bob

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Compréhension des exploits
    Citation Envoyé par LordBob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char DoAction[] = 
    "\x3c\x03\x9b\x08\x00\x41\x41\x41\x41\x41\x41\x41\x41\x00\x40\x00"
    "\x42\x42\x42\x42\x42\x42\x42\x42\x00\x43\x43\x43\x43\x43\x43\x43"
    "\x43\x00\x44\x44\x44\x44\x44\x44\x44\x44\x00\x45\x45\x45\x45\x45"
    "\x45\x45\x45\x00\x46\x46\x46\x46\x46\x46\x46\x46\x00\x00";
    C'est du code (x86, probablement) en binaire...

    Je vais essayer de le désassembler...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include<stdio.h>
    #include<stdlib.h>
     
    int main(void)
    {
       char DoAction[] =
          "\x3c\x03\x9b\x08\x00\x41\x41\x41\x41\x41\x41\x41\x41\x00\x40\x00"
          "\x42\x42\x42\x42\x42\x42\x42\x42\x00\x43\x43\x43\x43\x43\x43\x43"
          "\x43\x00\x44\x44\x44\x44\x44\x44\x44\x44\x00\x45\x45\x45\x45\x45"
          "\x45\x45\x45\x00\x46\x46\x46\x46\x46\x46\x46\x46\x00\x00";
     
       FILE *fp = fopen ("data.bin", "wb");
     
       if (fp != NULL)
       {
          size_t i;
          for (i = 0; i < sizeof DoAction; i++)
          {
             fputc(DoAction[i], fp);
          }
          fclose (fp), fp = NULL;
     
          system ("debug data.bin");
     
       }
     
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    -d
    0CEA:0100  3C 03 9B 08 00 41 41 41-41 41 41 41 41 00 40 00   <....AAAAAAAA.@.
    0CEA:0110  42 42 42 42 42 42 42 42-00 43 43 43 43 43 43 43   BBBBBBBB.CCCCCCC
    0CEA:0120  43 00 44 44 44 44 44 44-44 44 00 45 45 45 45 45   C.DDDDDDDD.EEEEE
    0CEA:0130  45 45 45 00 46 46 46 46-46 46 46 46 00 00 00 6F   EEE.FFFFFFFF...o
    0CEA:0140  6E 74 69 6E 75 65 72 2E-2E 2E 0D 0A 23 43 72 82   ntinuer.....#Cr.
    0CEA:0150  61 74 69 6F 6E 20 64 65-20 72 82 70 65 72 74 6F   ation de r.perto
    0CEA:0160  69 72 65 20 69 6D 70 6F-73 73 69 62 6C 65 0D 0A   ire impossible..
    0CEA:0170  2D 4C 65 20 76 6F 6C 75-6D 65 20 64 61 6E 73 20   -Le volume dans
    -u
    0CEA:0100 3C03          CMP     AL,03
    0CEA:0102 9B            WAIT
    0CEA:0103 0800          OR      [BX+SI],AL
    0CEA:0105 41            INC     CX
    0CEA:0106 41            INC     CX
    0CEA:0107 41            INC     CX
    0CEA:0108 41            INC     CX
    0CEA:0109 41            INC     CX
    0CEA:010A 41            INC     CX
    0CEA:010B 41            INC     CX
    0CEA:010C 41            INC     CX
    0CEA:010D 004000        ADD     [BX+SI+00],AL
    0CEA:0110 42            INC     DX
    0CEA:0111 42            INC     DX
    0CEA:0112 42            INC     DX
    0CEA:0113 42            INC     DX
    0CEA:0114 42            INC     DX
    0CEA:0115 42            INC     DX
    0CEA:0116 42            INC     DX
    0CEA:0117 42            INC     DX
    0CEA:0118 004343        ADD     [BP+DI+43],AL
    0CEA:011B 43            INC     BX
    0CEA:011C 43            INC     BX
    0CEA:011D 43            INC     BX
    0CEA:011E 43            INC     BX
    0CEA:011F 43            INC     BX
    -q
    C'est pas tres spéctaculaire. On dirait de simples chaines de caractères... Si c'est du code, je ne vois pas ce qu'il pourrait faire...

  3. #3
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut Re: Compréhension des exploits
    Citation Envoyé par LordBob
    Bonjour a tous,
    voila en fait je lis depuis un moment plusieurs code source d'exploits, et j'arrive a peu pres à comprendre leur fonctionnement.
    en fait y a juste une chose que je n'arrive vraiment pas a comprendre et que j'aimerais que l'on m'explique. en début de chaque programme, il y a des déclaration de tableau comme cela:
    C'est donc que tu n'as pas compris le principe de l'exploit ;-)

    L'idée, c'est justement d'avoir son code assembleur sous forme de "chaine de caracteres", et écraser la pile comme cela nous arrange, avec des NOP et des sauts bien placés...
    L'exploit, c'est justement ces chaines là...

    Cherche donc "shellcode" dans
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    ok, merci je vais donc chercher à me documenter à ce sujet.
    merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/12/2007, 01h47
  2. Réponses: 9
    Dernier message: 21/07/2006, 10h05
  3. [DEBUTANTE][ECLIPSE] Pb de compréhension des package SERVLET
    Par fchafia dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 18/02/2005, 16h55
  4. [FLASH MX] Prob de compréhension des bouttons
    Par WriteLN dans le forum Flash
    Réponses: 13
    Dernier message: 16/10/2003, 17h01
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo