• STATISTIQUES
  • Il y a eu un total de 0 membres et 33646 visiteurs sur le site dans les dernières 24h pour un total de 33 646 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accédÃ...
    Challenges
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Résolu] [BoF] problème adresse de retour
18-10-2012, 23h10 (Modification du message : 21-10-2012, 00h16 par welc0me.)
Message : #1
welc0me Hors ligne
Membre
*



Messages : 40
Sujets : 6
Points: 1
Inscription : Oct 2012
[Résolu] [BoF] problème adresse de retour
Bonsoir,

Pour mon premier message sur le forum, je me permet de reprendre une question qui me bloque sérieusement dans mon étude sur les failles applicatives. Je l'avais posée sur deux autres forum, sans réponse. J'espère donc trouver ici une âme charitable qui me permettra d'avancer Smile

J'ai récemment fait l'acquisition du livre "Techniques de Hacking" de Jon Erickson et je suis en ce moment en train d'étudier la partie Exploitation.

Mon but ici est d'effectuer un buffer overflow en utilisant l'environnement.
Pour cela j'ai créé une variable d'environnement SHELLCODE que j'ai remplie avec un tableau de Nop suivi d'un shellcode d'ouverture de shell root.

Le programme ciblé n'est autre que celui présent à ce lien : time0ut (et où la méthode que je veux effectuer y est bien décrite)

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

void unused_function(void) {
   printf("Impossible => fonction non utilisee\n");
}

void f(const char *s) {
   int i = 1;
   char buffer[12];
   strcpy(buffer,s);
   printf("i = %u\n",i);
}

int main(int argc, char **argv) {
   if(argc != 2) {
      fprintf(stderr,"Usage: buffer_overflow chaine");
      exit(EXIT_FAILURE);
   }
   f(argv[1]);

   return EXIT_SUCCESS;
}

Pour procéder à l'exploitation il faut donc parvenir à changer l'adresse de retour présente dans le bloc d'activation de la fonction f, et la remplacer par une fausse adresse de retour pointant vers le tableau de Nop contenu dans SHELLCODE (ma variable d'environnement).

J'exécute donc mon programme comme cela :

Code :
./buffer_overflow $(perl -e 'print "\x39\xe5\xff\xff\xff\x7f\x00\x00"x20')

(avec 0x7fffffffe539 une adresse pointant vers le milieu du tableau de NOP)

Mais j'obtiens ou rien, ou n'importe quoi.

Je regarde ce qu'il se passe avec gdb et j'obtiens :

Code :
x/20xg buffer
0x7fffffffdfa0: 0xe5397fffffffe539     0xffffe5397fffffff
0x7fffffffdfb0: 0x7fffffffe5397fff     0xe5397fffffffe539
0x7fffffffdfc0: 0xffffe5397fffffff     0x7fffffffe5397fff
0x7fffffffdfd0: 0xe5397fffffffe539     0xffffe5397fffffff
0x7fffffffdfe0: 0x7fffffffe5397fff     0xe5397fffffffe539
0x7fffffffdff0: 0xffffe5397fffffff     0x7fffffffe5397fff
0x7fffffffe000: 0xe5397fffffffe539     0xffffe5397fffffff
0x7fffffffe010: 0x7fffffffe5397fff     0xe5397fffffffe539
0x7fffffffe020: 0xffffe5397fffffff     0x7fffffffe5397fff
0x7fffffffe030: 0xe5397fffffffe539     0xffffe5397fffffff

Alors voici mes questions :
  • On remarque un décalage de 2 octets, et on voit que les octets nuls n'ont pas été inscrits dans le buffer, comment cela se fait-il ?
  • Comment puis-je faire pour réussir cette exploitation ?
  • Par ailleurs, j'ai remarqué que les adresses mémoires de la pile ont toutes une taille de 8 octets (0x7fffffffe536 par exemple) chez moi, alors que dans de nombreux tutoriels sur internet on ne voit que des adresses de 4 octets (0xbffffce8 par exemple) qui ont l'air de faciliter l'exploitation. Comment cela se fait-il ?

J'espère avoir été assez clair...

Merci ! Smile
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[Résolu] [BoF] problème adresse de retour - par welc0me - 18-10-2012, 23h10

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut