Pointer Redirecting
Δείκτες συμβολοσειρών
Εάν μια κλήση συνάρτησης πρόκειται να χρησιμοποιήσει τη διεύθυνση μιας συμβολοσειράς που βρίσκεται στη στοίβα, είναι δυνατό να εκμεταλλευτείτε την υπερχείλιση του buffer για να αντικαταστήσετε αυτήν τη διεύθυνση και να τοποθετήσετε μια διεύθυνση για μια διαφορετική συμβολοσειρά μέσα στο δυαδικό.
Αν για παράδειγμα μια κλήση συνάρτησης system
πρόκειται να χρησιμοποιήσει τη διεύθυνση μιας συμβολοσειράς για να εκτελέσει μια εντολή, ένας επιτιθέμενος θα μπορούσε να τοποθετήσει τη διεύθυνση μιας διαφορετικής συμβολοσειράς στη στοίβα, export PATH=.:$PATH
και να δημιουργήσει στον τρέχοντα κατάλογο ένα σενάριο με το όνομα του πρώτου γράμματος της νέας συμβολοσειράς καθώς αυτό θα εκτελεστεί από το δυαδικό.
Μπορείτε να βρείτε ένα παράδειγμα αυτού σε:
32bit, αλλάξτε τη διεύθυνση στη στοίβα με τη συμβολοσειρά flags ώστε να εκτυπωθεί από το
puts
Δείκτες συναρτήσεων
Ίδιο με τον δείκτη συμβολοσειρών αλλά εφαρμόζεται σε συναρτήσεις, αν η στοίβα περιέχει τη διεύθυνση μιας συνάρτησης που θα κληθεί, είναι δυνατό να την αλλάξετε (π.χ. για να καλέσετε τη system
).
Μπορείτε να βρείτε ένα παράδειγμα σε:
Αναφορές
Last updated