* Препълване на буфера
Публикувано на 30 ноември 2008 от Филип Петров. Записано в NetSec.
Препълването на буфера или „buffer overflow“ е проблем, който отново се основава на лошо филтриране на входните данни. Особено силно видими са проблемите при езици за програмиране, които позволяват директен достъп до паметта на ниско ниво (например С и С++). Този проблем е може би най-разпространения при много видове сървърни приложения.
Принципът на препълването на буфера е да бъде подменена информация в части на паметта, които би трябвало да бъдат недостъпни. Крайната цел на атаката е да бъде изпълнен програмен код, който като администратори не бихме искали да бъде стартиран. Преди да демонстрираме проблема ще разгледаме организацията на паметта:
1. „Кодов сегмент“ е част от паметта, при която се записват инструкции на асемблер. Тези инструкции се изпълняват от процесора. Не е задължително да са последователно подредени – използва се EIP указател.
2. „Сегмент за информация“ е мястото, в което се записват променливи и буфери.
3. „Стек“ е частта в паметта, където се записват променливите на функциите и се предават променливи към функции.
Функцията сама по себе си е кодов сегмент. Обикновено една функция извиква друга, като след приключването на втората управлението на програмата се връща към първата. Целта на препълването на буфера е да успеем да „прескочим“ в кодовия сегмент на паметта и да изпълним код, който не е желан.
Прeдлагам ви да прочетете един почти изчерпателен пример от VirusFree: част 1 и част 2. В него се демонстрира конкретно как се прави buffer overflow. Прикачвам ви (за всеки случай) и видеото от част 1, сорс кода от част 1, първа половина на видеото от част 2, втора половина на видеото от част 2 и сорс кода от част 2 на нашия сървър.
Trackback URI | RSS за коментарите
Пусни коментар
Страници
Категории
- C/C++ (45)
- DB (36)
- Dogs (49)
- Food (7)
- History (8)
- Java (33)
- Lada (41)
- Math (104)
- Metodos (23)
- NetSec (36)
- Other (76)
- Politics (32)
- Probability (13)
- VC++.Net (1)
- XHTML/JS (25)
Нови
- Един виц за капитализма
- Как да получиш целувка?
- Лека разходка на Витоша
- Роко и Берра на училище
- Газова бутилка под багажника на Лада Нива