PIE

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Βασικές Πληροφορίες

Ένα δυαδικό που έχει μεταγλωττιστεί ως PIE, ή Position Independent Executable, σημαίνει ότι το πρόγραμμα μπορεί να φορτωθεί σε διαφορετικές θέσεις μνήμης κάθε φορά που εκτελείται, αποτρέποντας τις σκληροκωδικοποιημένες διευθύνσεις.

Το κόλπο για την εκμετάλλευση αυτών των δυαδικών βρίσκεται στην εκμετάλλευση των σχετικών διευθύνσεων—οι μετατοπίσεις μεταξύ τμημάτων του προγράμματος παραμένουν ίδιες ακόμη κι αν οι απόλυτες τοποθεσίες αλλάξουν. Για να παρακάμψετε το PIE, χρειάζεται μόνο να διαρρεύσετε μια διεύθυνση, συνήθως από τη στοίβα χρησιμοποιώντας ευπάθειες όπως οι επιθέσεις με format string. Αφού έχετε μια διεύθυνση, μπορείτε να υπολογίσετε άλλες με βάση τις σταθερές μετατοπίσεις τους.

Ένα χρήσιμο υπόδειγμα στην εκμετάλλευση των δυαδικών PIE είναι ότι η βασική διεύθυνσή τους τελειώνει συνήθως σε 000 λόγω των σελίδων μνήμης που είναι οι μονάδες τυχαιοποίησης, μεγέθους 0x1000 bytes. Αυτή η ευθυγράμμιση μπορεί να είναι ένα κρίσιμο έλεγχος αν ένα εκμεταλλευτικό δεν λειτουργεί όπως αναμένεται, υποδεικνύοντας εάν έχει εντοπιστεί η σωστή βασική διεύθυνση. Ή μπορείτε να χρησιμοποιήσετε αυτό για την εκμετάλλευσή σας, αν διαρρεύσετε ότι μια διεύθυνση βρίσκεται στο 0x649e1024 ξέρετε ότι η βασική διεύθυνση είναι 0x649e1000 και από εκεί μπορείτε απλά να υπολογίσετε τις μετατοπίσεις των λειτουργιών και των τοποθεσιών.

Παρακάμψεις

Για να παρακάμψετε το PIE χρειάζεται να διαρρεύσετε κάποια διεύθυνση του φορτωμένου δυαδικού, υπάρχουν μερικές επιλογές γι' αυτό:

  • Απενεργοποιημένο ASLR: Αν το ASLR είναι απενεργοποιημένο ένα δυαδικό μεταγλωττισμένο με PIE θα φορτώνεται πάντα στην ίδια διεύθυνση, επομένως το PIE θα είναι άχρηστο καθώς οι διευθύνσεις των αντικειμένων θα είναι πάντα στον ίδιο χώρο.

  • Να σας δοθεί η διαρροή (συνηθισμένο σε εύκολες προκλήσεις CTF, ελέγξτε αυτό το παράδειγμα)

  • Δοκιμάστε όλες τις τιμές του EBP και του EIP στη στοίβα μέχρι να διαρρεύσετε τις σωστές:

  • Χρησιμοποιήστε μια ευπάθεια αυθαίρετης ανάγνωσης όπως η format string για να διαρρεύσετε μια διεύθυνση του δυαδικού (π.χ. από τη στοίβα, όπως στην προηγούμενη τεχνική) για να πάρετε τη βάση του δυαδικού και να χρησιμοποιήσετε μετατοπίσεις από εκεί. Βρείτε ένα παράδειγμα εδώ.

Αναφορές

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated