c++ probs mit zeigern! - Seite 2

Seite 2 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_probs_mit_zeigern_50238/page_2 - zur Vollversion wechseln!


Ringding schrieb am 05.10.2002 um 22:31

naja.

cin >> i1 >> i2;

ist auch nicht wirklich komplizierter.

gut, geht halt nur in c++. nur wenn einem das egal ist, ob scanf unsafe ist, dann ist es kein wunder, dass so viele sicherheitsluecken existieren.


Vir@s schrieb am 05.10.2002 um 22:59

Na welche Sicherheitslücken hast du denn bei einer Usereingabe mit scanf? Würd mich echt interessieren....


Ringding schrieb am 05.10.2002 um 23:27

Das ist das simpelste Basic an Sicherheitsluecke ueberhaupt.

Du machst so was:

char buf[512];
scanf("%s", buf);

--> peng

es wird der stack ueberschrieben, und alles ist roger :)

das gleiche geht auch, wenn der puffer per malloc() alloziert wurde. nur ist es dann ein bisschen muehsamer. nichtsdestotrotz existieren tausende exploits auch von dieser sorte.

wie's geht, ist hier nachzulesen:

http://www.phrack.com/show.php?p=49&a=14


Vir@s schrieb am 05.10.2002 um 23:45

Und wo genau ist da die Sicherheitslücke für eine Usereingabe?

Ich mein für meine Datenbank Applikation die alle Masterpasswörter der Nationalbank ausließt würd ich auch nicht scanf verwenden ;), aber ich würd sagen um eine Eingabe aus stdin auszulesen, und dass schön formatiert reicht es :D


Ringding schrieb am 05.10.2002 um 23:48

Jemand weiss, dass du mit dem Programm arbeitest, schickt dir ein File, das du damit oeffnen sollst --> Peng.


Vir@s schrieb am 05.10.2002 um 23:50

Entweder versteh ich hier was falsch, oder du... gehts nicht eigentlich darum eine Eingabe von der TASTATUR einzulesen? Für file öffnen verwendet man sowieso entweder ifstream Klassen oder die f* funktionen....


Ringding schrieb am 05.10.2002 um 23:56

Man kann ja auch ein File reinpipen mit <.


Vir@s schrieb am 05.10.2002 um 23:59

wie meinst das jetzt? Wenn ich ein Programm hab:

Code:
...
printf("Geben sie einen text ein: ");
scanf("%s",text);
....

Kann man eine File reinpipen?

Versteh mich nicht falsch, geb dir schon recht das scanf keine ideale Lösung ist, nur find ich das es für diesen Zweck vollkommen ausreichend ist!


Ringding schrieb am 06.10.2002 um 00:13

Naja, musst es ja nur so aufrufen:

programm < boesesfile.txt


Vir@s schrieb am 06.10.2002 um 00:18

Aso als Kommandozeilen Parameter. Okay das stimmt, Kommandozeilen Parameter einfach mit scanf auslesen ohne gute checks vorher ist wirklich schlecht ;)

Also sind ma uns einig des scanf für einfach 0815 Programme reicht, für sichere Anwendungen allerdings nicht mehr ;)


Ringding schrieb am 06.10.2002 um 00:22

ist schon klar, wenn's so ein 0815 zeug ist, dann ist es egal. aber oft wird dann solcher pfusch irgendwo eingesetzt, wofuer er urspruenglicherweise nicht gedacht war, und dann kracht's. das sollte man halt doch immer im hinterkopf behalten.


Vir@s schrieb am 06.10.2002 um 00:32

Klar, aber solange man es selber besser macht, kann man wenigstens sagen: ich habs ja gsagt, oder beim mir wär das nicht passiert :D


Neo-=IuE=- schrieb am 06.10.2002 um 02:49

oda man verwendet an pfusch weiter, weil man sich arbeit ersparen will und hats auch drin und des einlesen is genauso simpel, bis auf das, dass du an buffer brauchst
mit GETS(*buffer) liest ein
und mit SSCANF(buffer,"%d",$i) machst es im prinzip wie bei scanf :)


that schrieb am 06.10.2002 um 08:54

Wie man mit gets() ein funktionierendes Programm schreiben kann, ist mir ein Rätsel. Egal was man macht, die Eingabezeile kann länger sein als der Buffer, und schon krachts.

Wenns nach mir ginge, gehört diese Funktion aus der Runtime-Library gelöscht, genauso wie printf und sprintf.


Vir@s schrieb am 06.10.2002 um 09:36

aja, und was würdest du statt printf verwenden? Wo sind denn dort wieder deine schweren Sicherheitslücken?




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026