[C] Une petite devinette
|
11-04-2013, 11h29
(Modification du message : 13-04-2013, 18h41 par b0fh.)
Message : #1
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
[C] Une petite devinette
Considérez le code suivant:
Code : int positif[1000]; 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 [/spoiler] |
|
11-04-2013, 22h48
Message : #2
|
|
gr4ph0s
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 |
|
11-04-2013, 23h47
Message : #3
|
|
balis
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. |
|
12-04-2013, 01h01
Message : #4
|
|
ark
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 |
|
12-04-2013, 07h08
Message : #5
|
|
oosfalte
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 ? |
|
12-04-2013, 13h49
Message : #6
|
|
b0fh
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
Pour le résoudre, il faut aller assez bas niveau dans le fonctionnement du truc. |
|
12-04-2013, 14h02
Message : #7
|
|
gr4ph0s
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
"Institutions qui t'apprend dès l'départ que dans c'monde le verbe être ne peut se conjuguer sans avoir"
- Keny Arkana |
|
12-04-2013, 14h08
Message : #8
|
|
b0fh
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 ? |
|
12-04-2013, 23h14
Message : #9
|
|
OverDreams
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;} |
|
14-04-2013, 14h01
Message : #10
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] Une petite devinette
alors ? personne a trouvé ?
indice : mini/maxi |
|
14-04-2013, 14h02
(Modification du message : 14-04-2013, 14h09 par Kiwazaru.)
Message : #11
|
|
Kiwazaru
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.
|
|
15-04-2013, 00h37
(Modification du message : 15-04-2013, 00h37 par InstinctHack.)
Message : #12
|
|
OverDreams
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;} |
|
« Sujet précédent | Sujet suivant »
|
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 |
Utilisateur(s) parcourant ce sujet : 3 visiteur(s)