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

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 і ви можете прочитати про зловживання форматними рядками для читання произвольних адрес пам'яті в:

Format Strings

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks