Print Stack Canary
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Enlarge printed stack
Уявіть ситуацію, коли програма, вразлива до переповнення стека, може виконати функцію puts, вказуючи на частину переповнення стека. Зловмисник знає, що перший байт канарки - це нульовий байт (\x00
), а решта канарки - це випадкові байти. Тоді зловмисник може створити переповнення, яке перезаписує стек до першого байта канарки.
Потім зловмисник викликає функцію puts у середині корисного навантаження, що друкує всю канарку (за винятком першого нульового байта).
З цією інформацією зловмисник може створити та надіслати нову атаку, знаючи канарку (в тій же сесії програми).
Очевидно, ця тактика є дуже обмеженою, оскільки зловмисник повинен мати можливість друкувати вміст свого корисного навантаження, щоб екстрагувати канарку, а потім мати можливість створити нове корисне навантаження (в тій же сесії програми) і надіслати реальне переповнення буфера.
CTF приклади:
- https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
- 64 біт, ASLR увімкнено, але без PIE, перший крок - заповнити переповнення до байта 0x00 канарки, щоб потім викликати puts і витягнути його. З канаркою створюється ROP гаджет для виклику puts, щоб витягнути адресу puts з GOT, а потім ROP гаджет для виклику
system('/bin/sh')
- https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
- 32 біт, ARM, без relro, канарка, nx, без pie. Переповнення з викликом puts для витягування канарки + ret2lib, викликаючи
system
з ROP ланцюгом для попередження r0 (аргумент/bin/sh
) і pc (адреса system)
Arbitrary Read
З произвольним читанням, як те, що надається форматними рядками, може бути можливим витягнути канарку. Перевірте цей приклад: https://ir0nstone.gitbook.io/notes/types/stack/canaries і ви можете прочитати про зловживання форматними рядками для читання произвольних адрес пам'яті в:
- https://guyinatuxedo.github.io/14-ret_2_system/asis17_marymorton/index.html
- Це завдання зловживає дуже простим способом форматним рядком для читання канарки зі стека
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.