Jump to content

Shellcode

From Haidhi Wiki
Revision as of 03:11, 12 April 2025 by SanzSkuy (talk | contribs)

Linux

Shellcode sederhana untuk menjalankan perintah ping -c 4 google.com

msfvenom -p linux/x64/exec CMD="ping -c 4 google.com" -f c

# Output
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 57 bytes
Final size of c file: 267 bytes
unsigned char buf[] = 
"\x48\xb8\x2f\x62\x69\x6e\x2f\x73\x68\x00\x99\x50\x54\x5f"
"\x52\x66\x68\x2d\x63\x54\x5e\x52\xe8\x15\x00\x00\x00\x70"
"\x69\x6e\x67\x20\x2d\x63\x20\x34\x20\x67\x6f\x6f\x67\x6c"
"\x65\x2e\x63\x6f\x6d\x00\x56\x57\x54\x5e\x6a\x3b\x58\x0f"
"\x05";

File cpp

#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>

int main() {
    unsigned char shellcode[] = 
        "\x48\xb8\x2f\x62\x69\x6e\x2f\x73\x68\x00\x99\x50\x54\x5f"
        "\x52\x66\x68\x2d\x63\x54\x5e\x52\xe8\x15\x00\x00\x00\x70"
        "\x69\x6e\x67\x20\x2d\x63\x20\x34\x20\x67\x6f\x6f\x67\x6c"
        "\x65\x2e\x63\x6f\x6d\x00\x56\x57\x54\x5e\x6a\x3b\x58\x0f"
        "\x05";

    // Allocate executable memory
    void *exec_mem = mmap(
        0,
        sizeof(shellcode),
        PROT_READ | PROT_WRITE | PROT_EXEC,
        MAP_PRIVATE | MAP_ANONYMOUS,
        -1,
        0
    );

    if (exec_mem == MAP_FAILED) {
        perror("mmap");
        return 1;
    }

    // Copy shellcode into executable memory
    memcpy(exec_mem, shellcode, sizeof(shellcode));

    // Cast to a function pointer and execute
    void (*func)() = (void (*)())exec_mem;
    func();

    // Cleanup (unreachable in this case)
    munmap(exec_mem, sizeof(shellcode));

    return 0;
}

Windows

msfvenom -p windows/x64/exec CMD="ping google.com" -f c

# Output
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 283 bytes
Final size of c file: 1219 bytes
unsigned char buf[] = 
"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50"
"\x52\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52"
"\x18\x48\x8b\x52\x20\x48\x8b\x72\x50\x48\x0f\xb7\x4a\x4a"
"\x4d\x31\xc9\x48\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\x41"
"\xc1\xc9\x0d\x41\x01\xc1\xe2\xed\x52\x41\x51\x48\x8b\x52"
"\x20\x8b\x42\x3c\x48\x01\xd0\x8b\x80\x88\x00\x00\x00\x48"
"\x85\xc0\x74\x67\x48\x01\xd0\x50\x8b\x48\x18\x44\x8b\x40"
"\x20\x49\x01\xd0\xe3\x56\x48\xff\xc9\x41\x8b\x34\x88\x48"
"\x01\xd6\x4d\x31\xc9\x48\x31\xc0\xac\x41\xc1\xc9\x0d\x41"
"\x01\xc1\x38\xe0\x75\xf1\x4c\x03\x4c\x24\x08\x45\x39\xd1"
"\x75\xd8\x58\x44\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c"
"\x48\x44\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x48\x01"
"\xd0\x41\x58\x41\x58\x5e\x59\x5a\x41\x58\x41\x59\x41\x5a"
"\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41\x59\x5a\x48\x8b"
"\x12\xe9\x57\xff\xff\xff\x5d\x48\xba\x01\x00\x00\x00\x00"
"\x00\x00\x00\x48\x8d\x8d\x01\x01\x00\x00\x41\xba\x31\x8b"
"\x6f\x87\xff\xd5\xbb\xf0\xb5\xa2\x56\x41\xba\xa6\x95\xbd"
"\x9d\xff\xd5\x48\x83\xc4\x28\x3c\x06\x7c\x0a\x80\xfb\xe0"
"\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x59\x41\x89\xda\xff"
"\xd5\x70\x69\x6e\x67\x20\x67\x6f\x6f\x67\x6c\x65\x2e\x63"
"\x6f\x6d\x00";