* Препълване на буфера
Публикувано на 30 ноември 2008 в раздел ПТСК.
Препълването на буфера или “buffer overflow” е проблем, който отново се основава на лошо филтриране на входните данни. Особено силно видими са проблемите при езици за програмиране, които позволяват директен достъп до паметта на ниско ниво (например С и С++). Този проблем е може би най-разпространения при много видове сървърни приложения.
Принципът на препълването на буфера е да бъде подменена информация в части на паметта, които би трябвало да бъдат недостъпни. Крайната цел на атаката е да бъде изпълнен програмен код, който като администратори не бихме искали да бъде стартиран. Преди да демонстрираме проблема ще разгледаме организацията на паметта:
1. “Кодов сегмент” е част от паметта, при която се записват инструкции на асемблер. Тези инструкции се изпълняват от процесора. Не е задължително да са последователно подредени – използва се EIP указател.
2. “Сегмент за информация” е мястото, в което се записват променливи и буфери.
3. “Стек” е частта в паметта, където се записват променливите на функциите и се предават променливи към функции.
Функцията сама по себе си е кодов сегмент. Обикновено една функция извиква друга, като след приключването на втората управлението на програмата се връща към първата. Целта на препълването на буфера е да успеем да “прескочим” в кодовия сегмент на паметта и да изпълним код, който не е желан.
Прeдлагам ви да прочетете един почти изчерпателен пример от VirusFree: част 1 и част 2. В него се демонстрира конкретно как се прави buffer overflow. Прикачвам ви (за всеки случай) и видеото от част 1, сорс кода от част 1, първа половина на видеото от част 2, втора половина на видеото от част 2 и сорс кода от част 2 на нашия сървър.
Trackback URI | RSS за коментарите
Пусни коментар
Категории
- Бази от Данни (52)
- Вероятности (31)
- История (15)
- Кучета (69)
- Лада Нива (96)
- Математика (166)
- Методика (53)
- Общи работи (110)
- ПИК-3 Java (38)
- Политика (41)
- Програмни Среди (1)
- ПТСК (41)
- С/C++ (45)
- Семейни (16)
- Физика (35)
- ХHTML/JS (25)
- Храна (11)
Нови
- Извеждане на няколко произволни реда
- Full-Text търсене с InnoDB в MySQL
- Късметче от кафе
- Пред блока…
- Бушонно табло на Лада Нива