Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1248 connectés 

  FORUM HardWare.fr
  Programmation
  C

  gcc -> the gets function is dangerous and should not be used

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

gcc -> the gets function is dangerous and should not be used

n°819151
WhatDe
Posté le 10-08-2004 à 16:25:25  profilanswer
 

:heink:  
 
Voilà ce que j'ai avec ce bout de code basique:
 

Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4. char *ptr;
  5. ptr = malloc(81);
  6. gets(ptr);
  7. }


Pourquoi ?  
 
J'apprend le C avec un bouquin et c'est la solution qu'ils donnent à un petit exercice...
 
Merci

mood
Publicité
Posté le 10-08-2004 à 16:25:25  profilanswer
 

n°819153
chrisbk
-
Posté le 10-08-2004 à 16:26:08  profilanswer
 

because elle verifie pas si la chaine lu peut entré dans le buffer de destination, donc pb en pagailles

n°819156
cris56
Posté le 10-08-2004 à 16:26:35  profilanswer
 

le programme fuis, jette le bouquin

n°819161
jesus_chri​st
votre nouveau dieu
Posté le 10-08-2004 à 16:27:28  profilanswer
 

si tu tappe + de 80 caractètes ça déborde.
gets peut toujours faire un débordement quelque soit le tampon alloué avant, elle est donc toujours dangereuse.
celà dit moi je m'en sers souvent car elle est pratique, mais en étant conscient que ça crée un trou de sécurité dans mon prog.

n°819174
WhatDe
Posté le 10-08-2004 à 16:30:31  profilanswer
 

Ok  :(  
 

cris56 a écrit :

le programme fuis, jette le bouquin


Déjà que la traduction est superbement mal faite et que y'a des erreurs de tous les côtés  :pfff:  
24€ à la poubelle quasiment  :fou:

n°819178
Taz
bisounours-codeur
Posté le 10-08-2004 à 16:31:11  profilanswer
 

t'avais qu'à demander avant d'acheter de la merde :os

n°819188
WhatDe
Posté le 10-08-2004 à 16:34:19  profilanswer
 

Taz a écrit :

t'avais qu'à demander avant d'acheter de la merde :os


Il avait l'air bien, il est si joli dans sa robe jaune  :love:  
J'avais regardé pour le K&R mais ils avaient pas (à la FNAC évidemment  :lol:)
 
Pour ceux que ca intérressent le livre en question est: "Le programmeur: le langage C" de CampusPress...

n°819191
cris56
Posté le 10-08-2004 à 16:36:20  profilanswer
 

WhatDe a écrit :


J'avais regardé pour le K&R mais ils avaient pas (à la FNAC évidemment  :lol:)


 
du coup ta pris la merde qui  restait :D


Message édité par cris56 le 10-08-2004 à 16:36:57
n°819214
WhatDe
Posté le 10-08-2004 à 16:51:47  profilanswer
 

cris56 a écrit :

du coup ta pris la merde qui  restait :D


Ben ouais  [:airforceone]

n°819241
kadreg
profil: Utilisateur
Posté le 10-08-2004 à 17:00:48  profilanswer
 

warning: the use of `tmpnam' is dangerous, better use `mkstemp'
 
:o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
mood
Publicité
Posté le 10-08-2004 à 17:00:48  profilanswer
 

n°819353
Taz
bisounours-codeur
Posté le 10-08-2004 à 17:39:17  profilanswer
 

WhatDe a écrit :

Il avait l'air bien, il est si joli dans sa robe jaune  :love:  
J'avais regardé pour le K&R mais ils avaient pas (à la FNAC évidemment  :lol:)
 
Pour ceux que ca intérressent le livre en question est: "Le programmeur: le langage C" de CampusPress...

la fnac c'est les pires de tous. va dans n'importe quelle librairie, il te le commande pour pas un rond, ça te coute pareil que chez amazon (ou moins) et tu vais vivres de véritables professionels du livres

n°819473
Giz
Posté le 10-08-2004 à 18:38:18  profilanswer
 

jesus_christ a écrit :

si tu tappe + de 80 caractètes ça déborde.
gets peut toujours faire un débordement quelque soit le tampon alloué avant, elle est donc toujours dangereuse.
celà dit moi je m'en sers souvent car elle est pratique, mais en étant conscient que ça crée un trou de sécurité dans mon prog.


 
c'est a dire ?  [:figti]


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°819474
Taz
bisounours-codeur
Posté le 10-08-2004 à 18:39:19  profilanswer
 

abruti :o

n°819476
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 18:40:44  profilanswer
 

Giz a écrit :

c'est a dire ?  [:figti]


ben un débordement fait que tu écrit dans une zone mémoire qui ne t'es pas allouée, un endroit aléatoire, et tu peux corrompre des données


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°819479
Taz
bisounours-codeur
Posté le 10-08-2004 à 18:43:39  profilanswer
 

Masklinn a écrit :

ben un débordement fait que tu écrit dans une zone mémoire qui ne t'es pas allouée, un endroit aléatoire, et tu peux corrompre des données

utile quand on débugge un code de ne même pas pouvoir se fier à sa saisie

n°819480
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 18:45:22  profilanswer
 

c'est gênant, mais le fait d'avoir un bug indébuggable n'est pas un trou de sécurité en lui même ;)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°819482
Giz
Posté le 10-08-2004 à 18:47:39  profilanswer
 

Ouai, parce que j'avais entendu dire que c'etait une ancienne ruse pour faire du hacking cette fonction la...je croyais qu'en parlant de sécurité il voulait faire allusion a ceci.
 
=> taz : casse-toi ! :o


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°819483
WhatDe
Posté le 10-08-2004 à 18:56:25  profilanswer
 

Pas de sang sur mon topic :non:

n°819493
Taz
bisounours-codeur
Posté le 10-08-2004 à 19:05:30  profilanswer
 

Masklinn a écrit :

c'est gênant, mais le fait d'avoir un bug indébuggable n'est pas un trou de sécurité en lui même ;)

vous êtes vraiment incroyable, vous êtes des bleu-bites comme on en fait pas avec vos pointeurs, les mecs de gcc ont pris la peine, une fois n'est pas coutume, d'afficher un warning, et vous foncez ... :pfff:

n°819577
el muchach​o
Comfortably Numb
Posté le 10-08-2004 à 20:54:06  profilanswer
 

Giz a écrit :

Ouai, parce que j'avais entendu dire que c'etait une ancienne ruse pour faire du hacking cette fonction la...je croyais qu'en parlant de sécurité il voulait faire allusion a ceci.


 
Ben oui, exploiter un buffer overflow (écrasement mémoire) c'est même la méthode la plus classique de prise de contrôle d'un ordinateur à distance.
 
www.bletchleypark.net/algorithms/Buffer_Overflow.pdf


Message édité par el muchacho le 10-08-2004 à 23:00:19

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°819598
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 21:42:43  profilanswer
 

Taz a écrit :

vous êtes vraiment incroyable, vous êtes des bleu-bites comme on en fait pas avec vos pointeurs, les mecs de gcc ont pris la peine, une fois n'est pas coutume, d'afficher un warning, et vous foncez ... :pfff:


 :??:  
je disais simplement que les problèmes rencontrés au débug n'étaient pas les concéquences les plus graves (en terme de dangerosité potentielle) d'un dépassement de capacité moi :cry:

n°819600
Taz
bisounours-codeur
Posté le 10-08-2004 à 21:45:49  profilanswer
 

comment tu veux débugger quoi que ce soit en utilisant des fonctions notoirement bugguées et dangereuses ? c'est comme mets des abort() dans tous les sens, tu gagneras du temps et de l'argent

n°819608
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 21:56:57  profilanswer
 

Taz a écrit :

comment tu veux débugger quoi que ce soit en utilisant des fonctions notoirement bugguées et dangereuses ? c'est comme mets des abort() dans tous les sens, tu gagneras du temps et de l'argent


Mais bordel de foutracul j'ai pas dit le contraire espèce de vieux grincheux !
 
J'ai simplement sous entendu que le fait qu'il ne faut pas utiliser une commande parce qu'elle empêche de débugger on s'en tamponne quand on sait qu'il ne faut pas l'utiliser car elle constitue une faille de sécurité :cry:  
dans les deux cas le résultat est le même (tu utilises pas la commande)

n°819609
Taz
bisounours-codeur
Posté le 10-08-2004 à 21:57:39  profilanswer
 

je m'en fous, je veux pas entendre parler de gets :o

n°819611
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 22:01:50  profilanswer
 

t'es quand même un vieux grincheux :pfff:  
[meta ultra combo dans ta tête]
on dirait mon père :whistle:  
[/meta ultra combo dans ta tête]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°819612
chrisbk
-
Posté le 10-08-2004 à 22:02:53  profilanswer
 

j'ai un bug vous pouvez m'aider ? [:icon9]
 
 

Code :
  1. char * chaine;
  2. printf("entré votre nom" );
  3. gets(chaine);
  4. fflush(stdin);


 
je vois pas de pbs, mé ca mrche pas :(

n°819618
masklinn
í dag viðrar vel til loftárása
Posté le 10-08-2004 à 22:12:05  profilanswer
 

c'est pas bien de se moquer des gens :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°819619
Taz
bisounours-codeur
Posté le 10-08-2004 à 22:13:17  profilanswer
 

merde, fais pas de faute d'orthographe :o

n°820262
jesus_chri​st
votre nouveau dieu
Posté le 11-08-2004 à 13:43:06  profilanswer
 

Giz a écrit :

c'est a dire ?  [:figti]

oui comme dit plus haut si les octets qui débordent sont du binaire qui se place au bon endroit (à l'adresse d'une prochaine instruction pour peux qu'elle soit accessible) tu peux exécuter du code malicieux. C'est un grand classique des failles.

n°820871
WhatDe
Posté le 11-08-2004 à 21:48:23  profilanswer
 

:o  
 
Et maintenant voilà que les pages du livre commencent à se détacher ! A se demander si j'ai pas acheté un manuscrit...  :sarcastic:

n°821048
Tamahome
⭐⭐⭐⭐⭐
Posté le 12-08-2004 à 08:15:32  profilanswer
 

Giz a écrit :

c'est a dire ?  [:figti]


 
ben le classique buffer overflow :o
 
où l'on peut ecrire du code executable dans un endroit de la ram où on ne devrait pas pouvoir... c'est la magie du C :o

n°821049
Tamahome
⭐⭐⭐⭐⭐
Posté le 12-08-2004 à 08:16:04  profilanswer
 

WhatDe a écrit :

:heink:  
 
Voilà ce que j'ai avec ce bout de code basique:
 

Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4. char *ptr;
  5. ptr = malloc(81);
  6. gets(ptr);
  7. }


Pourquoi ?  
 
J'apprend le C avec un bouquin et c'est la solution qu'ils donnent à un petit exercice...
 
Merci


 
faudrait ptet tester ce que vaut ptr apres le malloc, non ? imagine que le malloc échoue  [:totoz]

n°821053
Taz
bisounours-codeur
Posté le 12-08-2004 à 08:21:52  profilanswer
 

imagine que malloc soit inutile

n°824820
hegros
Posté le 17-08-2004 à 10:55:51  profilanswer
 

Pourquoi chercher midi a 14heure.
gets ne doit plus être utiliser pour les raisons évoquées plus hauts.
 
A la place il vaut mieux utiliser fgets

n°825605
LeGreg
Posté le 18-08-2004 à 04:07:34  profilanswer
 

installez SP2 :o

n°825609
bjone
Insert booze to continue
Posté le 18-08-2004 à 04:45:26  profilanswer
 

chrisbk a écrit :

j'ai un bug vous pouvez m'aider ? [:icon9]
 
 

Code :
  1. char * chaine;
  2. printf("entré votre nom" );
  3. gets(chaine);
  4. fflush(stdin);


 
je vois pas de pbs, mé ca mrche pas :(


 
 :love:

n°825610
bjone
Insert booze to continue
Posté le 18-08-2004 à 04:46:28  profilanswer
 

LeGreg a écrit :

installez SP2 :o


 
et un athlon 64 pour avoir un bô message d'erreur et le kill du process en cado  :whistle:


Message édité par bjone le 18-08-2004 à 04:46:43
n°846057
DjobaDjobi
Wanna turn up the heat?
Posté le 09-09-2004 à 15:31:52  profilanswer
 

Salut,
 
a propos de buffer overlow, j'ai matté quelqes topics et étudiés quelques bouts de code.
Il y a toujours un trucs que j'ai pas compris : une fois le bout de code envoyé celui-ci viens donc "remplir" plus de memoire que le programmeur n'avait prévu et ainsi provoqué un debordement de tampon. Par contre, comment ce bout de code peut-il s'executer tout seul sur la machine vérolée ?  A part planter (core dump) le programme fautif je vois pas comment ca peut fonctionner ...
 
Bon en y regardant de plus prêt on peu voir que les exploits utilisent aussi une adresse de retour apres avoir envoyé le shellcode. J'imagine que c'est une espece de call adresse qui est éxecuté mais je vois toujours pas comment . l'@ en question doit sans doute être le pint d'entree en memoire de la variable devant accueillir la chaine (dans le cas d'un gets par ex)  
 
SI je comprend bien le seul interet de la chose est de profiter des privilèges attribués au programmes exploitable et ainsi executer son pti programme confortablement ?


Message édité par DjobaDjobi le 09-09-2004 à 15:43:35
n°846070
DjobaDjobi
Wanna turn up the heat?
Posté le 09-09-2004 à 15:42:29  profilanswer
 

L'athlon 64, il fait quoi de plus ?  en gros on aurais rajouté une fonctionnalité dans le prossesseur pour prévenir les bugs des programmeurs ? (lol) pour moi c'est prendre le pb à l'envers.. j'me demande bien a la demande de qui les constructeurs ont-ils rajouté ce systeme ;)
si vous avez un lien interessant sur le sujet je suis preneurs


Message édité par DjobaDjobi le 09-09-2004 à 15:42:54
n°846071
skeye
Posté le 09-09-2004 à 15:44:29  profilanswer
 

DjobaDjobi a écrit :

L'athlon 64, il fait quoi de plus ?  en gros on aurais rajouté une fonctionnalité dans le prossesseur pour prévenir les bugs des programmeurs ? (lol) pour moi c'est prendre le pb à l'envers.. j'me demande bien a la demande de qui les constructeurs ont-ils rajouté ce systeme ;)
si vous avez un lien interessant sur le sujet je suis preneurs


Tous les sites de hardware en parlent, ils bloquent les buffer overflow, c'est tout...[:skeye]


Message édité par skeye le 09-09-2004 à 15:45:53

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  gcc -> the gets function is dangerous and should not be used

 

Sujets relatifs
[Tomcat] : Incompatible object argument for function call[PHP] function + global, besoin d'aide... [RESOLU]
[SQL] Aggregate Function missing?Je cherche le code de __FUNCTION__
question existentielle ;-) SUB /functionerreur "In member function"
[PHP] Erreur sur function()Fatal error: Call to undefined function: ocilogon() in "fichierx.htm"?
Call to undefined function:  mysql_query()Call to undefined function: mysql_connect()
Plus de sujets relatifs à : gcc -> the gets function is dangerous and should not be used


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR