Как найти точный адрес салазок после нахождения диапазона адреса, содержащего обратный адрес? - PullRequest
0 голосов
/ 02 марта 2020

Следующая функция вызывается в программе удаленного сервера. Аргумент str указывает на строку, которая полностью предоставляется пользователями (размер строки составляет до 300 байт). Размер буфера равен X, что нам неизвестно (мы не можем отлаживать программу удаленного сервера). Однако каким-то образом мы знаем, что адрес массива буферов равен 0xAABBCC10, а расстояние между концом буфера и памятью, содержащей адрес возврата функции, равно 8. Хотя мы не знаем точного значения X, мы знаем, что его диапазон составляет от 20 до 100. Какой будет строка, которую вы будете вводить в программу, поэтому, когда эта строка копируется в буфер и когда возвращается функция bof (), серверная программа выполнит ваш код. У вас есть только один шанс, поэтому вам нужно построить строку таким образом, чтобы вы могли добиться успеха, не зная точно значения X.

int bof(char *str)
{ 
 char buffer[X];
 strcpy(buffer,str);
 return 1;
}

Диапазон адреса, содержащего адрес возврата (рассчитывается по me из заданного диапазона X): 0xAABBCC4A - 0XAABBCE6E. Что именно может быть строкой для переполнения буфера?

...