П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 184469 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 84598 раз(а).

Учебник HTML.
Просмотров 78543 раз(а).

Руководство по PHP5.
Просмотров 49144 раз(а).

Хостинг через призму DNS.
Просмотров 56738 раз(а).

Подборка текстов стандартных документов.
Просмотров 48465 раз(а).

Учебник PHP - Самоучитель
Просмотров 55052 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 56174 раз(а).

Внешние атаки...
Просмотров 45627 раз(а).

Учебник PHP.
Просмотров 40375 раз(а).

SSI в примерах.
Просмотров 30532 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь



Сэндвич панели купить в Уфе - сколько стоит сэндвич панель в Уфе www.panelkomplekt.ru.


Проблема с нулевым байтом

Уязвимыми функциями часто являются операции работы со строками, такие как strcpy(). Чтобы вставить код в середину приложения, шеллкод должен быть скопирован как строка. Однако операции копирования останавливаются, как только находят нулевой символ. Поэтому наш код не должен иметь таковых. Использование маленьких хитростей избавит нас от написания нулевых байтов. Например инструкция

    movl $0x00, 0x0c(%esi)

будет заменена на
    xorl %eax, %eax
    movl %eax, %0x0c(%esi)

Этот пример показывает использование нулевого байта. Однако перевод некоторых инструкций в шеснадцатиричное представление может открыть еще случаи появления нулевых байтов. Например, чтобы отличить системный вызов _exit(0) от других, значение регистра %eax устанавливается в 1, что видно в
0x804d996 <_exit+6>: mov $0x1,%eax
В переводе в шеснадцатиричное представление, эта строка принимает вид:
b8 01 00 00 00          mov    $0x1,%eax
Поэтому вы должны избежать ее использования. Хитрость заключается в инициализации %eax нулем и увеличении его на 1.

С другой стороны, строка "/bin/sh" должна заканчиватся нулевым байтом. Мы можем вписать его при создании шеллкода, однако, в соответствии с механизмом вставки его в программу, этот байт не может присутствовать в конечном приложении. Лучше добавить его следующим способом:

    /* movb работает только с одним байтом */
    /* эта инструкция эквивалентна */
    /* movb %al, 0x07(%esi) */
    movb %eax, 0x07(%esi)

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru