Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Charley
5 / 5 / 0
Регистрация: 11.06.2012
Сообщений: 176
#1

Переполнение буфера в vc 2010 - Visual C++

27.08.2013, 09:29. Просмотров 1310. Ответов 5
Метки нет (Все метки)

Не могу сделать переполнение буфера и передача управления на любой адрес программы в visual studio express 2010.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// rop.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, char *argv[])
{
    HINSTANCE hModule=::LoadLibrary(_T("mfc71.dll"));
    char buffer[10], stroka[100];
    //cin >> stroka;
    strcpy(buffer, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\x28\x81\x70\x75");
    return 0;
}
Постоянно выходит эксепшн, как его отключить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 09:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переполнение буфера в vc 2010 (Visual C++):

Переполнение буфера: что тут происходит? - C++
Добрый вечер; у меня есть уязвимая программа, которая в буфер длиной 30 копирует строку, переданную как аргумент этой программе. Делал по...

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate - Visual C++
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate. Всем ответившим большое спасибо)))

Переполнение стека - Visual C++
#include &lt;iostream&gt; using namespace std; int main() { const int n=10; const int m=10; int a, b, i, k; for(i=0; i&lt;n; i++) ...

PW_PAINT: переполнение счетчика - Visual C++
Здраствуйте Я совсем новичек в WINAPI,буквально второй день как разбираюсь. Нужно срочно написать програмку где щелчком мыши можно вызвать...

Переполнение буфера - C (СИ)
Помогите разобраться Лабораторная с переполнением буфера Вот сам код программы и скриншот результата #include &lt;stdio.h&gt; ...

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

5
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,443
27.08.2013, 11:04 #2
Во первых посмотри не используешь ли ты строки Юнткоде (в настройках проекта)
во вторых в дебиг-режиме исключение и будет выскакивать потому, что для всех буферов, переменных и прочее
создается "подушка безопасности" специальный блок инициализированных байтов если она меняется то отладчик видит переполнение и вызывает исключение
в третьих
Цитата Сообщение от Charley Посмотреть сообщение
char buffer[10], stroka[100];
* * //cin >> stroka;
* * strcpy(buffer, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\x28\x81\x70\x75");
хвост твоего buffer залезает в stroka поменяй их местами
а вообще атака через переполнение буфера тема очень скользкая и нахрапом её не возьмешь
0
Charley
5 / 5 / 0
Регистрация: 11.06.2012
Сообщений: 176
27.08.2013, 12:15  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
Во первых посмотри не используешь ли ты строки Юнткоде (в настройках проекта)
во вторых в дебиг-режиме исключение и будет выскакивать потому, что для всех буферов, переменных и прочее
создается "подушка безопасности" специальный блок инициализированных байтов если она меняется то отладчик видит переполнение и вызывает исключение
в третьих

хвост твоего buffer залезает в stroka поменяй их местами
а вообще атака через переполнение буфера тема очень скользкая и нахрапом её не возьмешь
Попробовал в релиз, но там переполнение не происходит и процесс выходит нормально.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <windows.h>
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, char *argv[])
{
    HINSTANCE hModule=::LoadLibrary(_T("mfc71.dll"));
    char buffer[10];
    strcpy(buffer, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); //aa\x28\x81\x70\x75");
    return 0;
}
0
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,443
27.08.2013, 19:01 #4
Цитата Сообщение от Charley Посмотреть сообщение
Попробовал в релиз, но там переполнение не происходит и процесс выходит нормально.
отладчик бери и смотри что как происходит
добавь перед и после буфера по одной char переменной посмотри куда хвост записывается
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7839 / 893
Регистрация: 27.09.2012
Сообщений: 19,247
Записей в блоге: 3
Завершенные тесты: 1
28.08.2013, 03:20 #5
Цитата Сообщение от Charley Посмотреть сообщение
передача управления на любой адрес
Современные компиляторы могут дать некоторую защиту от подобных атак, поэтому не факт что получится вообще это сделать простым переполнением. Например, GNU Stack smashing protection
0
Charley
5 / 5 / 0
Регистрация: 11.06.2012
Сообщений: 176
28.08.2013, 12:09  [ТС] #6
В общем я сделал так: свойства проекта->свойства конфигурации-> c/c++-> создание кода
Параметр "основные проверки времени выполнения" установите в неинициализированные переменные/RTCu
Параметр "проверка переполнения буфера" установите в значение нет (-GS)
Все управление переходит на затертый retaddr
1
28.08.2013, 12:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 12:09
Привет! Вот еще темы с ответами:

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

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

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

Переполнение буфера - C++ Linux
Дали на правку одно больше приложение. Ошибка возникает очень редко, через стандартный отладчик выводит те места, где её впринципе быть не...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru