* Препълване на буфера
Публикувано на 30 ноември 2008 в раздел ПТСК.
Препълването на буфера или „buffer overflow“ е проблем, който отново се основава на лошо филтриране на входните данни. Особено силно видими са проблемите при езици за програмиране, които позволяват директен достъп до паметта на ниско ниво (например С и С++). Този проблем е може би най-разпространения при много видове сървърни приложения.
Принципът на препълването на буфера е да бъде подменена информация в части на паметта, които би трябвало да бъдат недостъпни. Крайната цел на атаката е да бъде изпълнен програмен код, който като администратори не бихме искали да бъде стартиран. Преди да демонстрираме проблема ще разгледаме организацията на паметта:
1. „Кодов сегмент“ е част от паметта, при която се записват инструкции на асемблер. Тези инструкции се изпълняват от процесора. Не е задължително да са последователно подредени – използва се EIP указател.
2. „Сегмент за информация“ е мястото, в което се записват променливи и буфери.
3. „Стек“ е частта в паметта, където се записват променливите на функциите и се предават променливи към функции.
Функцията сама по себе си е кодов сегмент. Обикновено една функция извиква друга, като след приключването на втората управлението на програмата се връща към първата. Целта на препълването на буфера е да успеем да „прескочим“ в кодовия сегмент на паметта и да изпълним код, който не е желан.
Прeдлагам ви да прочетете един почти изчерпателен пример от VirusFree: част 1 и част 2. В него се демонстрира конкретно как се прави buffer overflow. Прикачвам ви (за всеки случай) и видеото от част 1, сорс кода от част 1, първа половина на видеото от част 2, втора половина на видеото от част 2 и сорс кода от част 2 на нашия сървър.
Trackback URI | RSS за коментарите
Пусни коментар
Категории
- Бази от Данни (39)
- Вероятности (30)
- История (14)
- Кучета (67)
- Лада Нива (91)
- Математика (158)
- Методика (52)
- Общи работи (107)
- ПИК-3 Java (38)
- Политика (40)
- Програмни Среди (1)
- ПТСК (37)
- С/C++ (45)
- Семейни (15)
- Физика (35)
- ХHTML/JS (25)
- Храна (11)
Нови
- Здравей бебе!
- Какво означават метеорологичните кодове?
- Берра проправя пътеки
- Задача от YES
- Колан за теглене на автомобил