HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.09.2016, 21:03
shellcoder
Новичок
Регистрация: 12.09.2016
Сообщений: 6
Провел на форуме:
1082

Репутация: 0
По умолчанию

Здравствуйте, прохожу серию exploitme из Gera secure programming.

И на 4 задании застрял.

вот код.

Код:
/* stack4-stdin.c                               *
* specially crafted to feed your brain by gera */

#include 

int main() {
    int cookie;
    char buf[80];

    printf("buf: %08x cookie: %08x\n", &buf, &cookie);
    gets(buf);

    if (cookie == 0x000d0a00)
        printf("you win!\n");
}
первые 3 задания решил более менее быстро. используя как вспомогательный инструмент Python.

а на 4 задании уже не помогает вот этот код для эксплуатации.

Код:
python -c 'print "A"*80 + "\x00\x0d\x0a\x00"[::-1]' | ./vulnerable
в следующем задании в 5 код не чуть не меняется...!

Код:
/* stack5-stdin.c                               *
* specially crafted to feed your brain by gera */

#include 

int main() {
    int cookie;
    char buf[80];

    printf("buf: %08x cookie: %08x\n", &buf, &cookie);
    gets(buf);

    if (cookie == 0x000d0a00)
        printf("you loose!\n");
}
Меняется только строчка печати... Вообще решил погуглить про нулевые байты. попал на securitylab на одну статью. От туда выяснил, что это плохие байты и вообще плохое значение 0x000d0a00 по мимо нулевых байтов есть еще символ \n и \t.

Собственно теперь вопрос. Я так понимаю автором этих заданий было так задумано, чтоб человек который будет решать эти exploitme понял, что такое значение не удастся передать перменной?

Я правильно понимаю, что этот код нельзя заэкслуатировать? не тупо буфер переполнить и шеллкод вставить. А именно чтоб переменная cookie стала равна нужному значению.
 
Ответить с цитированием

  #2  
Старый 12.09.2016, 22:26
Diadlo
Новичок
Регистрация: 24.09.2015
Сообщений: 19
Провел на форуме:
5931

Репутация: 0
По умолчанию

Первая выдача в гугле

https://oneaboperweek.wordpress.com/2010/04/19/solution-to-stack4-c/


А вообще, нуль-байт (\0), \n, \t это вполне обычные значения: при работе с массивом как с Си-строкой \0 является признаком конца строки. \n перенос строки, \t табуляция
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.