Τι είναι το Format String Vulnerability;
Για να καταλάβετε τι μορφή string ευπάθεια είναι, πρέπει πρώτα να γνωρίζουμε τι μορφή string είναι. Μια συμβολοσειρά μορφής είναι ένας τρόπος να λέει στους C μεταγλωττιστή πώς πρέπει μορφή αριθμών κατά την εκτύπωση τους.
Format Strings στη C
Στη γλώσσα προγραμματισμού C, υπάρχουν μια σειρά από λειτουργίες που θα αποδεχθούν τη μορφή string ως επιχείρημα. Αυτές οι λειτουργίες περιλαμβάνουν fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslog, και άλλα.
Οι πιο κοινές από αυτές είναι printf. Η χρήση των printf είναι:
printf μορφή [επιχειρήματα ...]
printf αποτελεσμάτων της αξίας της [επιχειρήματα ...] με τη μορφή που καθορίζεται από την μορφή.
Ένα παράδειγμα για να καλέσετε printf είναι:
printf ( "Ο κωδικός περιοχής είναι:% d \ n", 303)?
Υποστηριζόμενα format specifiers διαφέρουν από το ένα της C στο επόμενο. Η μορφή που υποστηρίζονται στο πλαίσιο specifiers FreeBSD είναι:
δ% Μετατροπή ακέραιο να υπογραφεί δεκαδικό string. % u Μετατροπή ακέραιο να unsigned δεκαδικό string. % i Μετατροπή ακέραιο να υπογραφεί δεκαδικό string? Ο ακέραιος μπορεί να είναι είτε σε δεκαδικό, στο οκταδικό (με ηγετικό 0) ή σε δεκαεξαδική (με ηγετικό 0x). o% Μετατροπή ακέραιο να unsigned octal string. % Χ% ή Χ Μετατροπή ακέραιο να unsigned δεκαεξαδικό string, χρησιμοποιώντας ψηφία 0123456789abcdef ``''για x και''για 0123456789ABCDEF `` X). γ% Μετατροπή σε ακέραιο το χαρακτήρα Unicode που αντιπροσωπεύει. % s Δεν μετατροπής? Απλά εισάγετε string. % f Μετατροπή αριθμό κινητής υποδιαστολής να υπογραφεί δεκαδικό string της μορφής xx.yyy, όπου ο αριθμός των y της καθορίζεται από την ακρίβεια (default: 6). Εάν η ακρίβεια είναι 0 τότε δεν δεκαδικό ψηφίο είναι εξόδου. % e% ή E Μετατροπή αριθμού κινητής υποδιαστολής σε επιστημονική σημειογραφία, με τη μορφή x.yyye +-zz, όπου ο αριθμός των y της καθορίζεται από την ακρίβεια (default: 6). Εάν η ακρίβεια είναι 0 τότε δεν δεκαδικό ψηφίο είναι εξόδου. Εάν το έντυπο χρησιμοποιείται Ε Ε τότε, αντί να είναι τυπωμένη ε. %% g ή G Αν ο εκθέτης είναι μικρότερη από -4 ή μεγαλύτερη ή ίση με την ακρίβεια, η μετατροπή κινητής υποδιαστολής αριθμό ως% για e% ή Ε. Διαφορετικά, όπως για τη μετατροπή% στ. Καταβιβαζόμενου μηδενικά και ένα δεκαδικό σημείο καταβιβαζόμενου παραλείπονται. %% Δεν μετατροπής: απλά τοποθετήστε%.
Για περισσότερες πληροφορίες σχετικά με τη μορφή specifiers, ανατρέξτε στην σελίδα για τον άνθρωπο "μορφή" σχετικά με το πλησιέστερο Unix σύστημα.
Format String Vulnerability Επιθέσεις
Format string ευπάθεια επιθέσεις εντάσσονται σε τρεις κατηγορίες: την άρνηση υπηρεσίας, την ανάγνωση και τη γραφή.
- Format string ευπάθεια άρνησης εξυπηρέτησης επιθέσεις χαρακτηρίζονται από τη χρήση πολλαπλών εμφανίσεων του% s μορφή specifier για να διαβάσετε τα δεδομένα εκτός της στοίβας, μέχρι το πρόγραμμα επιχειρήσει να διαβάσει δεδομένα από μια παράνομη διεύθυνση, γεγονός που θα προκαλέσει το πρόγραμμα για την συντριβή.
- Format string ευπάθεια ανάγνωση επιθέσεις συνήθως χρησιμοποιούν το x% format specifier να εκτυπώσετε τμήματα της μνήμης που δεν έχουν κανονικά πρόσβαση.
- Format string ευπάθεια γραπτώς επιθέσεις αξιοποιήσει τις% d,% u% x ή μορφή specifiers να αντικαταστήσετε την εγκύκλιο Pointer ισχύος και εκτέλεσης των χρηστών που κέλυφος κώδικα.
Διάφορες πηγές πληροφόρησης σχετικά με Format String Vulnerabilities
Για περισσότερες πληροφορίες σχετικά με την αξιοποίηση της μορφής ευπάθειες, ανατρέξτε στην Αξιοποίηση Format String Vulnerabilities με κοντή ουρά, και Format String Επιθέσεις από Tim Newsham.
Μάθετε πώς να αποφευχθεί μορφής ευπάθειες σε σας πηγαίου κώδικα με αυτά τα εξαιρετικά βιβλία για την ασφαλή προγραμματισμό από Amazon.com
|
Ένα θέμα ευπάθειας Διαχείρισης για Ανδρείκελα
Τελευταίες θέσεις Blog
- SourceForge έναντι Freshmeat


