В данной статье автор объясняет, как исправить уязвимости программного обеспечения.
В последнее время были широко распространены веб-уязвимости, однако, программные уязвимости, такие как переполнение буфера, по-прежнему остаются самыми опасными. Кроме того, они становятся причиной профессиональных атак. По сути, эти опасные ошибки программирования появляются в результате халатности самих программистов.
В этой статье я объясню, как исправить уязвимости программного обеспечения.
Это очень распространенный прием для обратной разработки. Его можно использовать для перехвата API, взлома, вставки кода и т.д. Но в моей статье, я объясню, как использовать эту технику, чтобы закрыть дыры в безопасности.
К сожалению, встроенные функции для редактирования ассемблера и бинарного кода в IDA или Ollydbg доступны только для "x86" исполняемых модулей. Например, если вы хотите исправить исполняемый код ARM или Xbox, вы должны посмотреть на код операции (инструкция кодирования) в информации о процессоре.
#include
int main()
{
char buf[16];
printf("\nString giriniz:");
scanf("%s", &buf);
return 0;
}
Как видите в исходном коде и коде сборки, scanf не проверяет размер строки. (% s)
Очевидно вы знаете, что проверить размер строк могут такие функции, как scanf и sprintf. Просто нам нужно поставить целые числа перед форматируемым значением. (e.g% 15s или %0,15 s)
Попробуем решить эту проблему. Для исправления я предпочитаю использовать Ollydbg. Он удобен для этого. IDA я использую только для анализа.
Откроем уязвимую программу через OllyDbg;
Как вы видите в дизассемблере, оно вызывает "00403011" смещение для перемещения строки в буфер.
Через CTRL + G комбинацию попадем на "00403011" адрес.
Думаю, из картинок вам все стало ясно:] Так что теперь мы будем модифицировать следующую строку --> "AND EAX, 694D0073".
Записываем "and eax, 733531" вместо кода "and eax, 694D0073" (а вы знаете, что коды 313573 являются шестнадцатеричными типами кодов "% 15s"и мы записали его, согласно принципу Last In First Out!)
Ну, вот и все! Мы с легкостью исправили уязвимую часть нашего программного обеспечения. Для сохранения исправлений, щелкните правой кнопкой на исправленной строке и выберите "Копировать в исполняемый модуль>Выбор ". Откроется новое окно, а при закрытии будет предложено сохранить изменения или не сохранять их. После сохранения вы можете попытаться переполнить ее :)
Давайте посмотрим на нашу исправленную программу через IDA PRO;
Наш канал — питательная среда для вашего интеллекта