Программа атаки с использованием форматирующей строки
Рассмотрим пример программы атаки на основе форматирующей строки. В случае программ, аналогичных программе rwhoisd, перед злоумышленником стоит задача выполнить злонамеренный программный код, который должен обеспечить доступ к главному хосту.
Программа атаки была написана для уже упоминавшейся ранее программы rwhoisd версии 1.5.7.1, откомпилированной на системе i386 Linux. Как уже говорилось, для выполнения злонамеренного программного кода программа атаки должна подменить величину, которая в некоторый момент времени интерпретируется атакованным процессом как адрес выполняемых команд. В рассматриваемой программе атаки адрес возврата из функции подменяется на адрес злонамеренного программного кода, который при помощи функции
Первое, что должна сделать программа атаки, – это подключиться к сервису сервера RWHOIS и найти форматирующую строку в стеке. После подключения к сервису функция
if((*ptr == “0”) && (*(ptr+1) == “x”))
{
memcpy(segment,ptr,10);
segment[10] = “\0”;
chekit = strtoul(segment,NULL,16);
if(chekit == FINDME)
{
printf(“*b00m*: found address #1: %i words
away.\n”,i);
foundit = i;
return foundit;
}
ptr += 10;
}