![]() |
[C] Une petite devinette - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Communauté (https://dev.n-pn.fr/forum/forumdisplay.php?fid=10) +--- Forum : Le bistrot (https://dev.n-pn.fr/forum/forumdisplay.php?fid=17) +--- Sujet : [C] Une petite devinette (/showthread.php?tid=2893) |
[C] Une petite devinette - b0fh - 11-04-2013 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] RE: [C] Une petite devinette - gr4ph0s - 11-04-2013 Il faut réussir à montrer quoi exactement? ^^' RE: [C] Une petite devinette - balis - 11-04-2013 XD me too some help no ? Corrompre du genre segfault ? RE: [C] Une petite devinette - ark - 12-04-2013 Corrompre == modifier de la mémoire a un endroit qui n'as pas été initialement prévu a cet effet. Sympathique ce petit challenge ![]() RE: [C] Une petite devinette - oosfalte - 12-04-2013 Intéressant, on doit écraser *table ou je me trompe ? RE: [C] Une petite devinette - b0fh - 12-04-2013 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. RE: [C] Une petite devinette - gr4ph0s - 12-04-2013 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 ![]() RE: [C] Une petite devinette - b0fh - 12-04-2013 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 ? RE: [C] Une petite devinette - OverDreams - 12-04-2013 Je te MP pour voir si j'ai bon même si je suis noob :') RE: [C] Une petite devinette - gruik - 14-04-2013 alors ? personne a trouvé ? indice : mini/maxi RE: [C] Une petite devinette - Kiwazaru - 14-04-2013 [spoiler]Integer Overflow : 2147483648 -> key = -key : 2147483648 = -2147483648 -> Integer = -2147483647 -> 2147483648 donc débortement :> Merci j0rn[/spoiler] RE: [C] Une petite devinette - OverDreams - 15-04-2013 [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 |