scanf()gets() (verhält sich ähnlich wie scanf("%s", buf))strcpy()strcat()sprintf()scanf()gets() (verhält sich ähnlich wie scanf("%s", buf))strcpy()strcat()sprintf()scanf()gets() (verhält sich ähnlich wie scanf("%s", buf))strcpy()strcat()sprintf()gets()void start_shell(void) {
gid_t gid = getegid();
uid_t uid = geteuid();
if (setresgid(gid, gid, gid))
perror("setresgid");
if (setresuid(uid, uid, uid))
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL);
}
int main(void) {
if (ask_passwd())
start_shell();
return 0;
}void start_shell(void) {
gid_t gid = getegid();
uid_t uid = geteuid();
if (setresgid(gid, gid, gid))
perror("setresgid");
if (setresuid(uid, uid, uid))
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL);
}
int main(void) {
if (ask_passwd()) // <--
start_shell();
return 0;
}void start_shell(void) {
gid_t gid = getegid();
uid_t uid = geteuid();
if (setresgid(gid, gid, gid))
perror("setresgid");
if (setresuid(uid, uid, uid))
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL);
}
int main(void) {
if (ask_passwd())
start_shell(); // <--
return 0;
}void start_shell(void) {
gid_t gid = getegid(); // <--
uid_t uid = geteuid(); // <--
if (setresgid(gid, gid, gid))
perror("setresgid");
if (setresuid(uid, uid, uid))
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL);
}
int main(void) {
if (ask_passwd())
start_shell();
return 0;
}void start_shell(void) {
gid_t gid = getegid();
uid_t uid = geteuid();
if (setresgid(gid, gid, gid)) // <--
perror("setresgid");
if (setresuid(uid, uid, uid)) // <--
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL);
}
int main(void) {
if (ask_passwd())
start_shell();
return 0;
}void start_shell(void) {
gid_t gid = getegid();
uid_t uid = geteuid();
if (setresgid(gid, gid, gid))
perror("setresgid");
if (setresuid(uid, uid, uid))
perror("setresuid");
printf("Starte Shell als Nutzer %d (uid=%d,gid=%d)\n", uid, uid, gid);
execlp("/bin/bash", "/bin/bash", NULL); // <--
}
int main(void) {
if (ask_passwd())
start_shell();
return 0;
}start_shell()) ist nett, aber nicht unbedingt nötiglibc-Funktion, z.B. system()
system(3) führt beliebige Shell-Kommandos aus system("ls -l");system präpariertgcc -pie)-fstack-protectorgcc -pie)-fstack-protectorstrcpy(),strcat() \(\rightarrow\) strncpy(),strncat()sprintf() \(\rightarrow\) snprintf()gets() \(\rightarrow\) fgets()scanf("%10s", buf)