House of Einherjar
Last updated
Last updated
Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)
Або з https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (можливо, потрібно заповнити tcache)
Мета - виділити пам'ять практично за будь-якою конкретною адресою.
Створіть фальшивий чанк, коли ми хочемо виділити чанк:
Встановіть вказівники, щоб вони вказували на себе, щоб обійти перевірки належності
Переливання одного байта з нульовим байтом з одного чанку в наступний для зміни прапора PREV_INUSE
.
Вкажіть у prev_size
зловживаного чанку off-by-null різницю між ним самим та фальшивим чанком
Розмір фальшивого чанку також повинен бути встановлений таким же розміром для обходу перевірок належності
Для створення цих чанків вам знадобиться витік купи.
Створюється фальшивий чанк всередині чанку, керованого зловмисником, що вказує з fd
та bk
на початковий чанк для обходу захисту
Виділяються ще 2 чанки (B
та C
)
Зловживання off by one в B
очищає біт prev in use
, а дані prev_size
перезаписуються різницею між місцем, де виділяється чанк C
, та фальшивим чанком A
, створеним раніше
Цей prev_size
та розмір у фальшивому чанку A
повинні бути однаковими для обходу перевірок.
Потім, заповнюється tcache
Потім, C
вивільняється, щоб він сконсолідувався з фальшивим чанком A
Потім створюється новий чанк D
, який буде починатися в фальшивому чанку A
та покривати чанк B
Будинок Einherjar закінчується тут
Це можна продовжити атакою на швидкий бін або забрудненням Tcache:
Вивільніть B
, щоб додати його до швидкого біну / Tcache
fd
B
перезаписується так, щоб він вказував на цільову адресу, зловживаючи чанком D
(оскільки він містить B
всередині)
Потім робляться 2 malloc, і другий буде виділяти цільову адресу
Після вивільнення вказівники не нулюються, тому все ще можливий доступ до їх даних. Тому чанк розміщується в неупорядкованому блоці та витікають вказівники, які він містить (витік libc), а потім на неупорядкованому блоці розміщується нова купа та витікається адреса купи з вказівника, який вона отримує.
Помилка переливання нуль-байту в strtok
.
Використовуйте House of Einherjar, щоб отримати ситуацію перекривання чанків та завершіть забрудненням Tcache, щоб отримати примітив для довільного запису.
Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)