2015-09-15 2 views
-3

Я пытаюсь изучить эксплойт переполнения буфера.Как использовать эксплойт переполнения буфера

у меня есть этот код:

 #include <stdio.h> 
     int read_req(FILE *p) { 
     char buf[16]; 
     int i; 
     fgets(buf, 1024, p); 
     i = atoi(buf); 
     return i; 
     } 
     int main() { 
     FILE *fp = fopen("/home/assignment/shellcode", "r"); 
     int x = read_req(fp); 
     printf("x = %d\n", x); 
     } 

Я хочу использовать этот код, используя этот шеллкода:

#include <stdio.h> 

    void main() { 

    char *name[2]; 

    name[0] = "/bin/sh"; 

    name[1] = NULL; 

    /* Launch shell */ 

    execve(name[0],name, NULL); 

} 

, но я не знаю, как его использовать, и я слышал, что fgets DonT вызывают буфер проблема переполнения .. Я запутался

Подумайте,

+0

Переполнение буфера происходит (обычно), когда вход больше размера буфера, на который он должен войти. У вас все еще может быть переполнение буфера с помощью 'fgets' - обычно рекомендуется использовать' fgets' потому что вы, программист, можете точно определить, насколько велика ваша вкладка. Если вы позволите ему быть больше, чем ваш буфер - congrats, переполнение буфера даже с помощью 'fgets'. Тем не менее ... большинство программистов (по крайней мере, большинство из тех, что я встречал), как правило, недовольны «эксплойтами». Это простой способ войти в легальную серозную зону (если не полная незаконная деятельность). – tonysdg

ответ

0

Поместите несколько сто 'A в файле /home/assignment/shellcode и запустить уязвимое приложение под отладчиком gdb. Это должно перезаписать eip/rip и быть достаточно, чтобы начать работу.

Смежные вопросы