Jump to content

Shellcode

From Haidhi Wiki
Revision as of 03:08, 12 April 2025 by SanzSkuy (talk | contribs) (Created page with "= Linux = Shellcode sederhana untuk menjalankan perintah <code>ping -c 4 google.com</code> <syntaxhighlight lang=bash> 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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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