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


  • ANNUAIRE
  • [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    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
[C] Une petite devinette
11-04-2013, 11h29 (Modification du message : 13-04-2013, 18h41 par b0fh.)
Message : #1
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
[C] Une petite devinette
Considérez le code suivant:

Code :
int positif[1000];
int negatif[1000];

...

int set(int key, int value) {
     int *table;

     if (key < 0) {
         key = -key;
         table = negatif;
     } else {
         table = positif;
     }

     if (key >= 1000)
          return ERROR;

     table[key] = value;
     return OK;

}

Trouvez un moyen de corrompre la mémoire en appelant la fonction set() !

Résolu par: Ark, OverDreams

Solution:
[spoiler]
T'y as cru, hein ? ha ha ha. Je la mettrai un peu plus tard Smile
[/spoiler]
+1 (4) -1 (0) Répondre
11-04-2013, 22h48
Message : #2
gr4ph0s Hors ligne
Membre
*



Messages : 32
Sujets : 5
Points: 11
Inscription : Aug 2011
RE: [C] Une petite devinette
Il faut réussir à montrer quoi exactement? ^^'
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana
+1 (0) -1 (0) Répondre
11-04-2013, 23h47
Message : #3
balis Hors ligne
Hack Compagnie by Eballys
*



Messages : 156
Sujets : 3
Points: 16
Inscription : Dec 2012
RE: [C] Une petite devinette
XD me too some help no ?
Corrompre du genre segfault ?
Sur le net , les poules ont des dents. Bali .
Soit original soit celui qui sort de l'ordinaire soit toi . Bali .
C: ok bash : ok asm : en cours.
HTML/CSS : ok , PHP/MySQL : en cours.
+1 (0) -1 (0) Répondre
12-04-2013, 01h01
Message : #4
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] Une petite devinette
Corrompre == modifier de la mémoire a un endroit qui n'as pas été initialement prévu a cet effet.

Sympathique ce petit challenge Smile
+1 (0) -1 (0) Répondre
12-04-2013, 07h08
Message : #5
oosfalte Hors ligne
Flying Cloud
*



Messages : 47
Sujets : 3
Points: 8
Inscription : Jan 2013
RE: [C] Une petite devinette
Intéressant,
on doit écraser *table ou je me trompe ?
+1 (0) -1 (0) Répondre
12-04-2013, 13h49
Message : #6
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: [C] Une petite devinette
Non, ce n'est pas en écrasant table (et encore moins *table Wink

Pour le résoudre, il faut aller assez bas niveau dans le fonctionnement du truc.
+1 (0) -1 (0) Répondre
12-04-2013, 14h02
Message : #7
gr4ph0s Hors ligne
Membre
*



Messages : 32
Sujets : 5
Points: 11
Inscription : Aug 2011
RE: [C] Une petite devinette
Mais tu veux qu'on parviennent à faire quoi? Car corrompre la mémoire c'est très vague j'ouvre sous ODBG, je supprime des trucs randoms et littéralement j'ai corrompus la mémoire.

Je ne demande pas ce qu'il faut regarder mais si tu veux un BoF ou tout autre truc Wink
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana
+1 (0) -1 (0) Répondre
12-04-2013, 14h08
Message : #8
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: [C] Une petite devinette
J'ai écrit "corrompre la mémoire en appelant la fonction set()".

On suppose donc qu'en tant qu'attaquant, tu peux déclencher un appel a la fonction set, avec les arguments qui te plaisent, et le but est de trouver des valeurs d'arguments pour lesquels la norme du C ne définit pas de comportement, et qui risque donc de causer une corruption quelconque.

C'est plus clair ?
+1 (1) -1 (0) Répondre
12-04-2013, 23h14
Message : #9
OverDreams Hors ligne
Membre actif
*



Messages : 68
Sujets : 3
Points: 4
Inscription : Oct 2012
RE: [C] Une petite devinette
Je te MP pour voir si j'ai bon même si je suis noob :')
Code :
While (1) {Orgasm;}
+1 (0) -1 (0) Répondre
14-04-2013, 14h01
Message : #10
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C] Une petite devinette
alors ? personne a trouvé ?
indice : mini/maxi
+1 (0) -1 (0) Répondre
14-04-2013, 14h02 (Modification du message : 14-04-2013, 14h09 par Kiwazaru.)
Message : #11
Kiwazaru Hors ligne
Padawan d'un super escargot
*



Messages : 284
Sujets : 26
Points: 139
Inscription : Mar 2012
RE: [C] Une petite devinette
[spoiler]Integer Overflow : 2147483648 -> key = -key : 2147483648 = -2147483648 -> Integer = -2147483647 -> 2147483648 donc débortement :> Merci j0rn[/spoiler]
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
+1 (0) -1 (0) Répondre
15-04-2013, 00h37 (Modification du message : 15-04-2013, 00h37 par InstinctHack.)
Message : #12
OverDreams Hors ligne
Membre actif
*



Messages : 68
Sujets : 3
Points: 4
Inscription : Oct 2012
RE: [C] Une petite devinette
[spoiler]
j'en sais pas beaucoup en C j'ai comme même essayer le challneg, le code avait l'air assez solide, pas de valeur allaient provoquer la corruption, mais comme il vérifie uniquement la limite supérieure, je savais que je devais en quelque sorte faire échouer inversion (key=-key fail)
Donc j'ai essayer de trouver la limite supérieure d'un int positive (oui, j'ai essayé beaucoup de truc et devient donc (0x7FFFFFFF), et google me l'a confirmer que c'était ça Tongue
Ensuite, j'ai essayé avec la valeur immédiate (0x80000000), Mais la clé inverti à échouer et j'ai eu une corruption
Bon veuillez m'excuser si je dis de la merde :')
[/spoiler]

EDIT Khaled : Merci de pas spoiler
Code :
While (1) {Orgasm;}
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  La devinette d’Einstein CyberSee 11 614 30-12-2011, 20h55
Dernier message: galex-713

Atteindre :


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