myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Exploiten von C Code? (https://mygully.com/showthread.php?t=2961965)

Doggyman 24.06.13 20:54

Exploiten von C Code?
 
Hi,

was muss man beachten um sicheren C-Code zu schreiben?

Formatstring-attack über direkte ausgabe der benutzereingaben,
bufferoverflow über benutzereingaben, die ungeprüft kommt, + strcpy
....

was gibts denn noch?

Ice weasel 24.06.13 23:06

Die meisten Fehler kannst du durch aufmerksames programmieren vermeiden.
z.B. wenn du formatierte eingaben hast schon diese begrenzen. sscanf("%40s", buf);
Immer die "n-Funktionen" benutzen z.B. strncpy statt strcpy, strncat statt strcat, usw.
Die Referenzen checken was eine Funktion macht und was nicht. Im Gegensatz zu strcpy fügt z.B. strncpy keine binäre Null an.
Beim arbeiten mit Pointern immer sicherstellen das diese auch auf einen gültigen Speicherbereich zeigen. Ich habe mir dazu einige Helper Funktionen gebastelt die z.B. einen pointer NULL setzen nach einem free() Aufruf und vor der Benutzung checken.
Prüfe Rückgabewerte, wenn irgendwann doch mal was schief läuft zeigt dein Programm evtl. undefiniertes Verhalten.
Achte auf Warnungen deines Compilers, der spuckt die nicht umsonst aus!

Mehr fällt mir grade nicht ein. Hoffe aber das dir das ein bisschen hilft.

Doggyman 25.06.13 10:04

Ja hilft ein wenig ;)
ich wusste das meiste leider schon^^
ich frage mich eher, wie man WELCHE lücken, WIE ausnutzen kann :)

Your_Conscience 25.06.13 10:19

Zitat:

Zitat von Doggyman (Beitrag 24672169)
ich frage mich eher, wie man WELCHE lücken, WIE ausnutzen kann :)

Man kann z.B. durch das Eingreifen in den Programmspeicher beliebige Werte ändern und auch auslesen.
Durch Decomplier kann man auch ziemlich leicht Zeichenketten finden, die im Klartext abgespeichert wurden.

Doggyman 25.06.13 10:30

Ich wollte darauf hinaus, was es noch außer Formatstring und bufferoverflow gibt.
das werte verändern und auslesen sind ja diese beiden arten :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.