Print Stack Canary
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)
Уявіть ситуацію, коли програма вразлива до переповнення стеку і може виконати функцію puts, вказуючи на частину переповнення стеку. Зловмисник знає, що перший байт канарки - це нульовий байт (\x00
), а решта канарки - випадкові байти. Тоді зловмисник може створити переповнення, яке перезаписує стек до першого байта канарки.
Потім зловмисник викликає функціональність puts у середині корисного навантаження, що друкує всю канарку (за винятком першого нульового байта).
З цією інформацією зловмисник може створити та надіслати нову атаку, знаючи канарку (в тій же сесії програми).
Очевидно, ця тактика є дуже обмеженою, оскільки зловмисник повинен мати можливість друкувати вміст свого корисного навантаження, щоб екстрагувати канарку, а потім мати можливість створити нове корисне навантаження (в тій же сесії програми) і надіслати реальне переповнення буфера.
CTF приклади:
64 біти, ASLR увімкнено, але без PIE, перший крок - заповнити переповнення до байта 0x00 канарки, щоб потім викликати puts і витікати його. З канаркою створюється ROP гаджет для виклику puts, щоб витікати адресу puts з GOT, а потім ROP гаджет для виклику system('/bin/sh')
32 біти, ARM, без relro, канарка, nx, без pie. Переповнення з викликом puts для витоку канарки + ret2lib, викликаючи system
з ROP ланцюгом для попередження r0 (аргумент /bin/sh
) і pc (адреса system)
З випадковим читанням, як те, що надається форматними рядками, може бути можливим витікати канарку. Перевірте цей приклад: https://ir0nstone.gitbook.io/notes/types/stack/canaries і ви можете прочитати про зловживання форматними рядками для читання випадкових адрес пам'яті в:
Цей виклик зловживає дуже простим способом форматним рядком для читання канарки зі стеку
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)