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) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте 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 (адреса системи)

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) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

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