Oi,
ik ben bezig met een stuk c code schrijven dat je user rechten veranderd naar root bij het aanroepen, hij controleerd het user id van de gebruiker die het aanroept met wat uid's die in een file staan (/etc/access). Alleen mijn prog segfault steeds als je een argument meegeeft. Hij laat wel alle output zien.
Het vreemde is dat ie niet segfault als je de 'i' weglaat bij de integer definities. (i wordt nog niet gebruikt maar die heb ik later nodig voor een loopje). Wie o wie ziet de fout
MrFreeze
ik ben bezig met een stuk c code schrijven dat je user rechten veranderd naar root bij het aanroepen, hij controleerd het user id van de gebruiker die het aanroept met wat uid's die in een file staan (/etc/access). Alleen mijn prog segfault steeds als je een argument meegeeft. Hij laat wel alle output zien.
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| #include <stdio.h> /* Een functie die de gebruker root maakt */ int makeroot(void) { setreuid(0,0); setgid(0); setgroups(0); return 0; } int main( int argc, char *argv[] ) { int r_uid=-1, f_uid=-2, toegang=0, i=1; char *line; FILE *fp; /* Lees de file uit en kijk of de UID er in voorkomt */ r_uid = getuid(); fp = fopen("/etc/access","r"); while (fscanf(fp,"%s",line) != EOF) { f_uid = atoi(line); if (r_uid == f_uid) { toegang = 1; break; } } /* Kijk of de user access heeft, zo niet stop het programma, dit zorgt er voor dat als de user geen toegang heeft hij er meteen uit gegooid wordt en dus niet de kans heeft iets te exploiten */ if (toegang != 1) { fprintf(stderr,"Geen toegang\n"); return 1; } /* Kijk of er commandline argumenten zijn meegegeven, zo niet open een shell met root rechten */ if (argc == 1) { makeroot(); execl("/bin/bash","bash",0); return 0; } /* Kijk of er switches in de commandline voorkomen, hier moet ik nog een loopje voor bouwen die alle argumenten langsgaat. */ if (strncmp(argv[1],"--add",5) == 0) { fprintf(stderr,"Sorry, deze optie werkt nog niet\n"); } /* Programma succesvol */ return 0; } |
Het vreemde is dat ie niet segfault als je de 'i' weglaat bij de integer definities. (i wordt nog niet gebruikt maar die heb ik later nodig voor een loopje). Wie o wie ziet de fout
MrFreeze
[ Voor 16% gewijzigd door Glimi op 17-12-2002 10:09 . Reden: en toen was het leesbaar ]