Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/48: Рейтинг темы: голосов - 48, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89

Переполнение буфера, адрес возврата

23.03.2015, 18:39. Показов 10358. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, где можно найти адрес возврата при переполнении буфера. Visual Studio 2012 windows 8.1
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2015, 18:39
Ответы с готовыми решениями:

Переполнение буфера
Объясните почему вылетает ошибка и помогите исправить. Зарание спасибо возникло переполнение буфера, что привело к повреждению...

Переполнение буфера
В программе имеется форма и записывается текстовые файлы. Когда она запускается всё работает нормально, ProgressBar доходит до...

Переполнение буфера
Не могу найти, где у меня ошибка, выдает переполнение буфера, подскажите пожалуйста. Здесь реализуется связный список #include...

26
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
29.03.2015, 13:02  [ТС]
Студворк — интернет-сервис помощи студентам
не нужно быть в вк чтобы это посмотреть)
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
29.03.2015, 13:05
У меня открывает страницу авторизации ВК.
0
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
29.03.2015, 13:09  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
У меня открывает страницу авторизации ВК.
https://pp.vk.me/c624129/v6241... pWn_4Y.jpg
https://pp.vk.me/c624129/v6241... RN-Iq4.jpg
так должно открыться
здесь максимально подробно описано)
http://www.youtube.com/watch?v=tu_Cu976hAk
типо с помощью strcpy затираем адреса где где вызов майн jmp esp и шелл кодом, и при возврате из стека мы переходим в jmp esp, а далее шелл код
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
29.03.2015, 13:56
Цитата Сообщение от rjrf Посмотреть сообщение
типо с помощью strcpy затираем адреса где где вызов майн jmp esp и шелл кодом,
и при возврате из стека мы переходим в jmp esp, а далее шелл код
Да нет же, все работает не так.
С помощью переполнения буфера нужно затереть адрес возврата из функции,
который лежит в стеке, своим адресом, только-то и всего. Никаких jmp esp
не нужно, тем более, как я уже писал выше, это бессмысленно.
На современных Windows стек лежит в неисполняемой области памяти,
попытка перейти туда сразу вызывает access violation.

Вот пример переполнения буфера, после выхода из main попадаем в
функцию Shellcode:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//
// Compiled with no optimizations.
// Buffer security checks = disabled.
//
#include <cstdio>
#include <Windows.h>
 
void Shellcode()
{
    printf("Hello!\n");
    ExitProcess(0);
}
 
void BuffOverflow(char *ptr)
{
    *((SIZE_T *)(ptr + 36)) = (SIZE_T)Shellcode;
}
 
int main()
{
    char buf[32] = "";
    BuffOverflow(buf);
    return 0;
}
> Hello!
И я еще раз повторю, что размещать шелл-код в стековой
памяти нельзя, т.к. из-за NoExecute он просто не будет выполнен.
1
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
29.03.2015, 14:02  [ТС]
но у меня же выполнился))
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
29.03.2015, 14:20
Значит, DEP в системе (или для данного процесса) был выключен.
Это скорее редкое исключение, чем правило.

Добавлено через 15 минут
В упрощенном виде, эксплуатация переполнения буфера реализуется так.

Допустим, есть некое приложение, про которое мы знаем, что при заполнении
текстом одной из форм возможен выход за пределы буфера, и это никак
не контролируется. Мы также узнали, что буфер лежит в стеке и адрес
возврата из функции всегда лежит по известному смещению от него.

Порядок действий в этом случае таков: вбиваем в форму специальный текст,
составленный так, чтобы перезаписать адрес возврата в стеке на свой.
Новый адрес возврата должен указывать на точку входа в шелл-код.
Сам шелл-код тоже забивается в стек текстом.

Вот и все. На выходе из функции по инструкции ret произойдет возврат в
функцию шелл-кода.

Но здесь есть два препятствия. Во-первых, как я уже писал, стековая
память не исполняемая, поэтому писать в стек шелл-код нет смысла, это
не будет работать на большинстве современных систем. Во-вторых, ввиду
ASLR адреса загружаемых модулей, кучи, стека и других структур все
время меняются и захардкодить их в большинстве случаев не выйдет.
1
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
03.04.2015, 20:43  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Значит, DEP в системе (или для данного процесса) был выключен.
Это скорее редкое исключение, чем правило.

Добавлено через 15 минут
В упрощенном виде, эксплуатация переполнения буфера реализуется так.

Допустим, есть некое приложение, про которое мы знаем, что при заполнении
текстом одной из форм возможен выход за пределы буфера, и это никак
не контролируется. Мы также узнали, что буфер лежит в стеке и адрес
возврата из функции всегда лежит по известному смещению от него.

Порядок действий в этом случае таков: вбиваем в форму специальный текст,
составленный так, чтобы перезаписать адрес возврата в стеке на свой.
Новый адрес возврата должен указывать на точку входа в шелл-код.
Сам шелл-код тоже забивается в стек текстом.

Вот и все. На выходе из функции по инструкции ret произойдет возврат в
функцию шелл-кода.

Но здесь есть два препятствия. Во-первых, как я уже писал, стековая
память не исполняемая, поэтому писать в стек шелл-код нет смысла, это
не будет работать на большинстве современных систем. Во-вторых, ввиду
ASLR адреса загружаемых модулей, кучи, стека и других структур все
время меняются и захардкодить их в большинстве случаев не выйдет.
Я кажется понял почему у меня все-таки работает, я в настройках проекта vs отключал DEP и DYNAMICBASE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2015, 20:43

Переполнение буфера
Подскажите, пожалуйста кто-нибудь, в чем беда... Во время выполения программы пишет, что буфер переполнен, что точка останова смещена и...

переполнение буфера
Что такое переполнение буфера?

Переполнение буфера
Добрый день! В общем: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main(int argc, char* argv) { ...

Переполнение буфера! (наверное)
Идет открытие порта звуковой карты, получение битов, запись битов в буфер и дальнейшие манипуляции с ним (пока только вывод в текстовый...

Не получается сделать переполнение буфера
Всем привет! Нужно сделать переполнение буфера и подменить адрес функции на другой. Если делаю так: void overflow(char *ptr) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru