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