Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2013, 23:18   #1
freekyn
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 12
По умолчанию переполнение буфера

Помогите разобраться
Лабораторная с переполнением буфера

Вот сам код программы и скриншот результата

Код:
#include <stdio.h>
#include <string.h>
void printff()
{
    printf("QWERTY");
}
int overflow(char *ptr)
{
    char buffer[2];
    strcpy(buffer, ptr);
    return 0;
}
int main()
{
    int a;
    char argv[1];
    int argc=2;
    if(argc>1)
    {
        overflow(&argv[1]);
    }
    printf("%d\n", printff);
    scanf("%d", a);
    return 0;
}


После ввода строки ааааааааааааааааааааааааааааааааааа ааааа теоретически: должна выскочить ошибка и опереполнении буфера и тому подобное

запускаю exe файл на виртуалке xp sp3
компилирую на 2010 VS

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

выручайте
freekyn вне форума Ответить с цитированием
Старый 25.04.2013, 00:47   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Скриншот результата не найден.
2)
Цитата:
После ввода строки ааааааааааааааааааааааааааааааааааа ааааа теоретически: должна выскочить ошибка и опереполнении буфера и тому подобное
Почему именно Вы так решили?
3) Какого чёрта argc и argv у Вас объявлены в теле main? Зачем они Вам, в таком случае?
4) Козиол, Личфилд, Эйтэл, Энли, Эрен, Мехта, Хассель: "Искусство взлома и защиты систем". Найти и прочитать первые две главы. Керниган, Ричи: "Язык C". Найти и прочитать.
Abstraction вне форума Ответить с цитированием
Старый 25.04.2013, 17:14   #3
freekyn
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
1) Скриншот результата не найден.
2) Почему именно Вы так решили?
3) Какого чёрта argc и argv у Вас объявлены в теле main? Зачем они Вам, в таком случае?
4) Козиол, Личфилд, Эйтэл, Энли, Эрен, Мехта, Хассель: "Искусство взлома и защиты систем". Найти и прочитать первые две главы. Керниган, Ричи: "Язык C". Найти и прочитать.
Исправил вот на это


Код:
#include <stdio.h>
#include <string.h>
void printff()
{
    printf("QWERTY");
}
void overflow(char *ptr)
{
    char buffer[2];
    strcpy(buffer, ptr);
}
int main(int argc, char* argv[])
{
    int a;
    if(argс>1)
    {
        overflow(argv[1]);
    }
    printf("%d\n", printff);
    scanf("%d", &a);
    return 0;
}
Всё равно программа не прекращает свою работу/аварийного завершения не происходит даже при переполнении на 1000 символов
freekyn вне форума Ответить с цитированием
Старый 25.04.2013, 17:21   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Всё равно программа не прекращает свою работу/аварийного завершения не происходит даже при переполнении на 1000 символов
Гм. Для начала сформулируйте, где в приведённой программе переполнение буфера, при каком условии оно наступает и к каким результатам может привести.
В частности, мне было бы очень интересно узнать, зачем Вам scanf("%d", &a);
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переполнение буфера при использовании SSE Berlioz Помощь студентам 3 19.08.2012 23:11
Переполнение буфера в функции demoniqus Общие вопросы C/C++ 12 19.04.2012 00:17
переполнение буфера goluzov Общие вопросы C/C++ 21 28.11.2011 09:04
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
переполнение буфера Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.07.2011 02:24