Array Indexing
Основна інформація
Ця категорія включає всі вразливості, які виникають через можливість перезапису певних даних через помилки в обробці індексів у масивах. Це дуже широка категорія без конкретної методології, оскільки механізм експлуатації повністю залежить від умов вразливості.
Однак тут ви можете знайти деякі цікаві приклади:
Є 2 зіткнення масивів, один для адрес, де зберігаються дані, і один з розмірами цих даних. Можливо перезаписати одне з іншого, дозволяючи записати довільну адресу, вказавши її як розмір. Це дозволяє записати адресу функції
free
в таблиці GOT, а потім перезаписати її адресоюsystem
, і викликати free з пам'яті з/bin/sh
.64 біти, без nx. Перезаписати розмір, щоб отримати вид буферного переповнення, де кожна річ буде використана як подвійне число і впорядкована від найменшого до найбільшого, тому потрібно створити шеллкод, який відповідає цим вимогам, з урахуванням того, що канарейка не повинна бути переміщена зі свого місця, і, нарешті, перезаписати RIP адресою до ret, яка відповідає попереднім вимогам, і вказати найбільшу адресу новою адресою, що вказує на початок стеку (витікла програмою), тому можливо використовувати ret для переходу туди.
64 біти, без relro, канарейка, nx, без pie. Є відхилення на один елемент в масиві на стеці, що дозволяє контролювати вказівник, надаючи WWW (він записує суму всіх чисел масиву в перезаписану адресу відхиленням на одиницю в масиві). Стек контролюється, тому адреса
exit
GOT перезаписується наpop rdi; ret
, і в стек додається адреса доmain
(повернення доmain
). Використовується ланцюжок ROP для витоку адреси put в GOT за допомогою puts (exit
буде викликано, тому він викличеpop rdi; ret
, виконуючи цей ланцюжок в стеці). Нарешті використовується новий ланцюжок ROP для виконання ret2lib.32 біти, без relro, без канарейки, nx, pie. Зловживання поганим індексуванням для витоку адрес бібліотеки libc та купи зі стеку. Зловживання переповненням буфера для виклику ret2lib, який викликає
system('/bin/sh')
(адреса купи потрібна для обходу перевірки).
Last updated