IL SEMBLE QUE VOUS UTILISEZ ADBLOC POUR BLOQUER LA PUBLICITÉ, AUCUNE PUB INTRUSIVE SUR FDZ ET PAS DE POPUP
FDZ EST GRATUIT DONC MERCI DE DÉSACTIVER VOTRE ADBLOCK ET DE BIEN VOULOIR PARTICIPER ET JOUER LE JEU


PAR SUITE D'ABUS LES SERVEURS CCCAM ET ABONNEMENT NE SONT PAS TOLÉRÉS SUR LE FORUM

Page 1 sur 5 12345 DernièreDernière
Affichage des résultats 1 à 10 sur 42

Discussion: Petits jeux pour comprendre les "buffer overflow"

  1. #1
    Date d'inscription
    février 2008
    Messages
    111
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut Petits jeux pour comprendre les "buffer overflow"

    Bon alors il semble que des gens s'interessent à la sécurité sur le Forum.

    C'est pour cela que je vous propose un petit jeu que j'avais fait à l'époque et dont l'objectif et d'apprendre à exploiter les "buffer overflow" sous Unix et plus particulièrement sous LINUX.

    Alors je ne sais pas si ca va intéresser quelqu'un mais je lance l'idée et puis on verra...

    Pour commencer je vous donne le petit programme C suivant:

    ---- newbie1.c -----

    #include <stdio.h>

    int main (int argc, char **argv)
    {
    int crap;
    int check;
    char buf[20];
    strcpy(buf, argv[1]);
    if (check==0xdeadbeef)
    {
    system("/bin/tcsh");
    }
    }

    ---- newbie1.c -----

    L'objectif ici est de me donner la réponse sous forme d'un petit programme C qui construira le buffer, puis qui exécutera le programme ci dessus compilé, en passant le buffer attendu en argument.

    L'objectif ici est de rentrer dans la partie de code suivante:

    if (check==0xdeadbeef)
    {
    system("/bin/tcsh");
    }


    Allez à vous de jouer !

  2. #2
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    12

    Par défaut

    j'aime énormement ces trucs mais je comprend pas en c
    mais je v comme meme chercher

    EDIT:l'idée est de faire passer plus que 20 caractère c'est ça ?

  3. #3
    Date d'inscription
    février 2008
    Messages
    111
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut

    Ouép L'idée des 20 char est bien la.

    Mais la c'est du C niveau débutant donc c'est le moment de s'y mettre. La réponse ne doit pas dépasser une dizaine de lignes et encore je suis gentil

  4. #4
    Date d'inscription
    janvier 2008
    Localisation
    oran
    Messages
    1 080
    Remerciements
    6
    Remercié 3 fois dans 3 messages
    Pouvoir de réputation
    12

    Par défaut

    ah tu es gentil !! ok accroche toi aux questions dans ce cas la
    pour commencer une simple question ^_^ qu'est ce que c'est les "**"

    Edit:Le programme ne marche pas chez moi il m'écrit que "strcpy" doit étre déclaré ou quelque chose comme ça :S
    Dernière modification par Boss_Med ; 05/04/2008 à 22h00.

  5. #5
    Date d'inscription
    février 2008
    Messages
    111
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut

    Google est ton ami

    Tu trouveras plein de tutoriaux sur le language C en ligne.

    Bon courage

  6. #6
    Date d'inscription
    janvier 2008
    Localisation
    Ile-de-France
    Messages
    8 103
    Remerciements
    291
    Remercié 439 fois dans 225 messages
    Pouvoir de réputation
    10

    Par défaut

    Salem,

    donne nous le but recherché par la manip comme indice et j'essaierais de trouver! sans google, c'est promis..

  7. #7
    Date d'inscription
    janvier 2008
    Localisation
    Ile-de-France
    Messages
    8 103
    Remerciements
    291
    Remercié 439 fois dans 225 messages
    Pouvoir de réputation
    10

    Par défaut

    n'ayant pas la reponse je me permet de repondre au question de Boss_med,

    les (int argc, char **argv) c'est equivalant au (int argc, string args[]) du java.

    le char *args c'est pour representer une chaine de caractere, args est un pointeur pointant vers la case memoire contenant le premier caractere et tout ce qui suit (les cases) sont la suite de la chaine jusqu'a un caractere special, pour la 2eme * c'est pr dire que c'est un pointeur de pointeur de char (argv), autrement dit un tableau (suite de cases "pointeur" de type char) et tout comme java le [index] permetera d'acceder (faire le calcul d'@) pour acceder à l'élément voulu (ici pointeur de char ou en langage up : un string).........je me suis moi meme embrouillé.

    bref, le vecteur argv c'est la suite de chaine pris en argument par le programme, comme par ex format c: /q , ici argv[0] est "c:" et argv[1] est "/q", et argc = 2 puisqu'il y'a 2 params.

    dsl lyas pour le HS.

  8. #8
    Date d'inscription
    janvier 2008
    Messages
    1 779
    Remerciements
    2
    Remercié 23 fois dans 9 messages
    Pouvoir de réputation
    12

    Question

    A vrai dire je n'ai pas très bien saisi l'objectif. Si je comprend bien le but est de provoquer un débordement du buffer.

    Citation Envoyé par Iyas Voir le message
    L'objectif ici est de rentrer dans la partie de code suivante:

    if (check==0xdeadbeef)
    {
    system("/bin/tcsh");
    }
    Pour s'y faire il faut rajouter des lignes de code dans la structure conditionnelle IF...

    Citation Envoyé par Iyas Voir le message
    L'objectif ici est de me donner la réponse sous forme d'un petit programme C qui construira le buffer, puis qui exécutera le programme ci dessus compilé, en passant le buffer attendu en argument.
    Tu parles aussi de programme compilé... cela veut dire que pour causer le débordement il fraudera analyser le code machine généré par ton code.

    c'est bien ça ?

    فهم السؤال ، نصف الجواب
    Dernière modification par assilabox ; 06/04/2008 à 10h11.

  9. #9
    Date d'inscription
    février 2008
    Messages
    111
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut

    Bon ok je n'ai pas été très clair...

    Je vous prépapre une petite démo histoire que vous compreniez un peu mieux le principe

    A tout d'suite

  10. #10
    Date d'inscription
    février 2008
    Messages
    111
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    10

    Par défaut

    Bon alors pour commencer on va faire plus simple...

    Prenons le code suivant:

    /* newbie1.c */

    #include <stdio.h>

    int main(int argc, char **argv)
    {

    int crap;
    int check;
    char buf[20];

    if (argc < 2)
    exit(1);

    strcpy(buf,argv[1]);

    if (check==0x42424242)
    system("/bin/sh");

    }


    /* newbie1.c */


    La première question à se poser est: que fait le code ci dessus ?

    Et bien c'est simple, dans un premier temps il copie argv[1] dans buf.
    argv[1] ici est l'argument passé au programme lors de son exécution.
    Puis, il compare la valeur de l'entier check, et si ce dernier est bien égal à 0x42424242 et bien il exécute system("/bin/sh");.

    Pas très compliqué hun ?

    Donc biensur il vous faut un linux à disposition...

    [cb@ns34229 cb]$ vi newbie1.c

    On copie colle le code ci dessus, puis on le compile:

    [cb@ns34229 cb]$ gcc -o newbie1 newbie1.c
    [cb@ns34229 cb]$

    L'objectif maintenant est d'obtenir l'exécution de system("/bin/sh") en passant le buffer qui convient en argument:

    [cb@ns34229 cb]$ ./newbie1 abcdefghj
    [cb@ns34229 cb]$

    Il ne se passe donc rien...

    Maintenant voilà ce que ca donne avec la bonne réponse (que je vais cacher bien évidemment) :

    [cb@ns34229 cb]$ ./newbie1 [le_buffer_magique]
    sh-2.05$

    On constate que le programme newbie1 à bien exécuté la partie du code system("/bin/sh");

    Pour ce premier exercice, pas besoin de coder quoi que ce soit Il vous suffit de passer le bon argument au programme newbie1.


    Voilà J'espere que c'est un peu plus clair

Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/11/2012, 04h13
  2. [Actualités] "iPhone 5" Maintenant Disponible en "Autralie" et au "Japon" et dans 8 pays !
    Par Hicham dans le forum Actu - News High-Tech
    Réponses: 1
    Dernier message: 14/10/2012, 22h47
  3. [A vendre] Compte sTeam A vendre """ Jeux FPS """""
    Par MiG29MosTA dans le forum Ventes
    Réponses: 20
    Dernier message: 23/01/2012, 17h31
  4. pour les amateurs de jeux de courses en ligne " un jeu qui déchire"
    Par fawez dans le forum Jeux en Réseau / LAN Arena
    Réponses: 0
    Dernier message: 08/08/2010, 23h11

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
[Auto utilitaire DZ] [Algérie Info] [Guide Algérie] [Mosquée ALBADR MEAUX]

is PageRank Checking Icon