Δικτύωση

* Γνώση Υπολογιστών >> Δικτύωση >> Ασφάλεια Δικτύων

Linux Buffer Overflow Tutorial

Ρυθμιστικό υπερχειλίσεις είναι κοινές παραβιάσεις της ασφάλειας των συστημάτων πληροφορικής που απαιτούν την είσοδο του χρήστη , όπως τα στοιχεία σύνδεσης . Μια υπερχείλιση συμβαίνει όταν μια μεταβλητή στον κώδικα σήμαινε να κατέχει πληροφορίες που υποβλήθηκαν από το χρήστη ( όπως το όνομα σύνδεσης) δεν είναι αρκετά μεγάλο . Στην περίπτωση αυτή , τα επιπλέον δεδομένα που εισάγει ο χρήστης " ξεχειλίζει " η διαθέσιμη μνήμη που διατίθενται . Το γεγονός αυτό , το οποίο ονομάζεται " υπερχείλισης buffer " μπορεί να οδηγήσει σε επιπλέον δεδομένων αντικατάσταση ή τροποποίηση των δεδομένων σε άλλα προγράμματα στη μνήμη . Αυτό το παράδειγμα δείχνει πώς μια υπερχείλιση λειτουργεί στο επίπεδο του κωδικού . Τα πράγματα που θα χρειαστείτε
επεξεργαστή κειμένου
C /C + + compiler ή IDE όπως το Microsoft Visual Studio
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Δημιουργήστε το buffer . Ακολουθήστε αυτό το παράδειγμα :

# include

int main ( ) { char

χρήστη login_name [ 20 ] ?

Printf ( " Πληκτρολογήστε το login : " ) ?

scanf ( "% s " , όνομα χρήστη login_name ) ?

printf ( " υπερχείλισης buffer ")? }


Αυτό το βασικό κώδικα δημιουργεί μια σειρά χαρακτήρων ( μια λέξη , ουσιαστικά ) που ονομάζεται " όνομα χρήστη login_name " που θα κρατήσει την είσοδο του χρήστη . Παρατηρήστε ότι « χρήστη login_name " είναι μόνο 20 χαρακτήρες . Το πρόγραμμα ζητά στη συνέχεια για την είσοδο του χρήστη , και αποθηκεύει τις πληροφορίες σε " χρήστη login_name . " 2

προκαλέσει την υπερχείλιση του buffer . Η μεταγλώττιση του προγράμματος , και να το εκτελέσετε . Όταν η ζητηθεί , εισαγάγετε ένα όνομα χρήστη που υπερβαίνει τους 20 χαρακτήρες . Για παράδειγμα :

Πληκτρολόγησε το όνομα : αυτό είναι μια μεγάλη πρόταση που θα ανατρέψουν το διαθέσιμο χώρο κατά τον ΕΙΣΟΔΟΣ Κυμαινόμενου

Hit . " Enter". Το μήνυμα εξόδου θα εκτυπώσει και το πρόγραμμα θα τερματιστεί . Η μεταβλητή έχει υπερβεί το διαθέσιμο χώρο buffer στο " όνομα χρήστη login_name " μεταβλητή . Το ερώτημα είναι , τι συνέβη ;
εικόνων 3

Κατανοήστε πώς λειτουργεί η μνήμη του υπολογιστή . Δεδομένου ότι η είσοδος του χρήστη αποθηκεύεται σε " χρήστη login_name , " η περίσσεια ενημέρωσης (με κάθε χαρακτήρα πέραν των 20 χαρακτήρες ) γράφτηκε στη μνήμη πέρα από τα όρια της μεταβλητής . Αυτά τα δεδομένα πρέπει να αποθηκεύονται κάπου . Στην περίπτωση αυτή , αποθηκεύεται στη μνήμη αμέσως γειτονικά προς όπου το " όνομα χρήστη login_name " μεταβλητή που βρίσκεται. Με πηγαίνει πέρα ​​από τα όρια της μεταβλητής σύνδεσης , τα επιπλέον δεδομένα ( σκόπιμα ή όχι) αναμορφώνοντας τα δεδομένα αμέσως μαζί με τη μεταβλητή . Αυτό σημαίνει ότι ο χάκερ θα μπορούσε να ξαναγράψει βασικά κώδικα , και να αλλάξει το πώς λειτουργεί ο κώδικας , κατ 'ουσίαν, την ιδιοκτησία του συστήματος .
Η 4

Συνειδητοποιήστε τα τρωτά σημεία του Linux . Το Linux είναι γραμμένος σε C /C + + , και πολλά από τη βασική λειτουργικότητα του απαιτεί τη χειραγώγηση των στοιχειοσειρών χαρακτήρων . Ωστόσο , πολλές σύγχρονες διανομές Linux προστατεύουν από περιπτώσεις υπερχείλισης στα σημεία όπου απαιτείται εισόδου του χρήστη , είτε μέσω της προστασίας καπνοδόχου ή δυναμικά αλλαγή μεγέθους συστοιχίες χαρακτήρα . Εξακολουθούν να υπάρχουν τρωτά σημεία : το buffer overflow exploit USB ανακαλύφθηκε το 2011 είναι ένα παράδειγμα . Στην περίπτωση USB , ένα πολύ μακρύ ID USB ​​μπορεί να υπερχειλίσει μια μεταβλητή συστήματος Linux .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα