gcc -> the gets function is dangerous and should not be used - C - Programmation
Marsh Posté le 10-08-2004 à 16:26:08
because elle verifie pas si la chaine lu peut entré dans le buffer de destination, donc pb en pagailles
Marsh Posté le 10-08-2004 à 16:27:28
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.
Marsh Posté le 10-08-2004 à 16:30:31
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
24 à la poubelle quasiment
Marsh Posté le 10-08-2004 à 16:34:19
Taz a écrit : t'avais qu'à demander avant d'acheter de la merde s |
Il avait l'air bien, il est si joli dans sa robe jaune
J'avais regardé pour le K&R mais ils avaient pas (à la FNAC évidemment )
Pour ceux que ca intérressent le livre en question est: "Le programmeur: le langage C" de CampusPress...
Marsh Posté le 10-08-2004 à 16:36:20
WhatDe a écrit : |
du coup ta pris la merde qui restait
Marsh Posté le 10-08-2004 à 16:51:47
ReplyMarsh Posté le 10-08-2004 à 17:00:48
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
Marsh Posté le 10-08-2004 à 17:39:17
WhatDe a écrit : Il avait l'air bien, il est si joli dans sa robe jaune |
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
Marsh Posté le 10-08-2004 à 18:38:18
jesus_christ a écrit : si tu tappe + de 80 caractètes ça déborde. |
c'est a dire ?
Marsh Posté le 10-08-2004 à 18:40:44
Giz a écrit : c'est a dire ? |
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
Marsh Posté le 10-08-2004 à 18:43:39
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
Marsh Posté le 10-08-2004 à 18:45:22
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
Marsh Posté le 10-08-2004 à 18:47:39
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 !
Marsh Posté le 10-08-2004 à 19:05:30
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 ...
Marsh Posté le 10-08-2004 à 20:54:06
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
Marsh Posté le 10-08-2004 à 21:42:43
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 ... |
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
Marsh Posté le 10-08-2004 à 21:45:49
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
Marsh Posté le 10-08-2004 à 21:56:57
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é
dans les deux cas le résultat est le même (tu utilises pas la commande)
Marsh Posté le 10-08-2004 à 22:01:50
t'es quand même un vieux grincheux
[meta ultra combo dans ta tête]
on dirait mon père
[/meta ultra combo dans ta tête]
Marsh Posté le 10-08-2004 à 22:02:53
j'ai un bug vous pouvez m'aider ?
Code :
|
je vois pas de pbs, mé ca mrche pas
Marsh Posté le 10-08-2004 à 22:12:05
c'est pas bien de se moquer des gens
Marsh Posté le 11-08-2004 à 13:43:06
Giz a écrit : c'est a dire ? |
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.
Marsh Posté le 11-08-2004 à 21:48:23
Et maintenant voilà que les pages du livre commencent à se détacher ! A se demander si j'ai pas acheté un manuscrit...
Marsh Posté le 12-08-2004 à 08:15:32
Giz a écrit : c'est a dire ? |
ben le classique buffer overflow
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
Marsh Posté le 12-08-2004 à 08:16:04
WhatDe a écrit :
|
faudrait ptet tester ce que vaut ptr apres le malloc, non ? imagine que le malloc échoue
Marsh Posté le 17-08-2004 à 10:55:51
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
Marsh Posté le 18-08-2004 à 04:45:26
chrisbk a écrit : j'ai un bug vous pouvez m'aider ?
|
Marsh Posté le 18-08-2004 à 04:46:28
LeGreg a écrit : installez SP2 |
et un athlon 64 pour avoir un bô message d'erreur et le kill du process en cado
Marsh Posté le 09-09-2004 à 15:31:52
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 ?
Marsh Posté le 09-09-2004 à 15:42:29
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
Marsh Posté le 09-09-2004 à 15:44:29
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 |
Tous les sites de hardware en parlent, ils bloquent les buffer overflow, c'est tout...
Marsh Posté le 10-08-2004 à 16:25:25
Voilà ce que j'ai avec ce bout de code basique:
Pourquoi ?
J'apprend le C avec un bouquin et c'est la solution qu'ils donnent à un petit exercice...
Merci