Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

start:                        

                        

           push   1

           push   offset comm1

           call   WinExec                    ; !!!!!     

 

           push   0                         

           call   ExitProcess               

                                           

           comm1  db 'cmd',0

end start                                 

end

Теперь нам необходимо разобраться, как выглядит стек внутри функции WinExec. Рассмотрим схему стека внутри WinExec (вызов данной функции отмечен восклицательными знаками).

  

Для построения нашей атаки нам наиболее важны значения, отмеченные восклицательными знаками. Первый же параметр можно упустить.

Перейдём к конструированию нашей атаки. Мы должны так переполнить буфер, чтобы при возвращении из функции мы попали прямиком в WIN API-функцию с заполненным стеком. И самое главное, что стек должен быть заполнен корректно для вызова cmd.exe.

Разберём схему построения данной атаки:

n  Подготавливается имя программы («cmd»), мусор и вычисляются номера байтов, которые перетирают адрес возврата.

n  Вычисляется адрес строки при помощи отладчика так, чтобы он указывал на строку «cmd» в стеке.

n  Вычисляются адреса функций: WinExec, ExitProcess.

n  Затем подготовленный буфер, содержащий имя программы («cmd»), мусорные байты, новый адрес строки и адреса функций, передаётся уязвимой программе.

Рассмотрим схему стека при реализации данной атаки:

Как вы можете видеть по схеме стека, в момент атаки мы упустили первый параметр функции WinExec. А также мы поставили адрес функции ExitProcess в качестве адреса возврата из функции WinExec. После того, как консоль будет запущена, управление будет передано на функцию ExitProcess, которая корректно завершит процесс.

Теперь рассмотрим простую уязвимую программу и построим для неё эксплоит, работающий через неисполнимый стек.

Рассмотрим листинг:

#include <stdio.h>

#include <windows.h>

 

void vuln_func(char *stroka)


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100