PIE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Бінарний файл, скомпільований як PIE, або Position Independent Executable, означає, що програма може завантажуватися в різних місцях пам'яті щоразу, коли вона виконується, запобігаючи жорстко закодованим адресам.
Трюк для експлуатації цих бінарників полягає в експлуатації відносних адрес — зміщення між частинами програми залишаються незмінними, навіть якщо абсолютні місця змінюються. Щоб обійти PIE, вам потрібно лише витягти одну адресу, зазвичай з стека, використовуючи вразливості, такі як атаки форматного рядка. Як тільки у вас є адреса, ви можете обчислити інші за їхніми фіксованими зміщеннями.
Корисна підказка при експлуатації бінарників PIE полягає в тому, що їх базова адреса зазвичай закінчується на 000 через те, що сторінки пам'яті є одиницями рандомізації, розміром 0x1000 байт. Це вирівнювання може бути критичною перевіркою, якщо експлуатація не працює так, як очікувалося, вказуючи на те, чи була ідентифікована правильна базова адреса.
Або ви можете використовувати це для вашої експлуатації, якщо ви витягнете, що адреса знаходиться за 0x649e1024
, ви знаєте, що базова адреса 0x649e1000
і з цього ви можете просто обчислити зміщення функцій і місць.
Щоб обійти PIE, потрібно витягти якусь адресу завантаженого бінарника, для цього є кілька варіантів:
Вимкнений ASLR: Якщо ASLR вимкнено, бінарник, скомпільований з PIE, завжди буде завантажуватися за тією ж адресою, отже, PIE буде марним, оскільки адреси об'єктів завжди будуть в одному й тому ж місці.
Отримати витік (поширено в простих CTF завданнях, перевірте цей приклад)
Брутфорсити значення EBP та EIP у стеці, поки не витечуть правильні:
Використовувати вразливість довільного читання, таку як форматний рядок, щоб витягти адресу бінарника (наприклад, зі стека, як у попередній техніці), щоб отримати базу бінарника та використовувати зміщення звідти. Знайдіть приклад тут.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)