#hacking #RCE #ROP_chain #0day #IPcamera #instar #shodan
3. Обход ASLR без утечки
libc с PIE + ASLR = адрес system() неизвестен. Классические методы утечки не работают, поскольку любой ROP chain крашит бинарник, и утечка становится бесполезной после релокации. Тут помогла эксплуатация GOT/PLT. В уязвимой функции вызывается isalnum() из libc, ее адрес уже разрешен и лежит в GOT. Расстояние между isalnum и system — константа 0x13230 байт.
4. ROP-chain магия
— Читаем isalnum@got через gadget ldr r6, [r3, #0x10]
— Добавляем offset 0x13230 через gadget add r6, fp, r6 и получаем адрес system
— Пишем вычисленный адрес обратно в GOT через str r0, [r4, #4] (GOT writable благодаря partial RELRO)
— Готовим аргументы в r0
— Вызываем isalnum@plt, который теперь прыгает на system вместо isalnum
ВУАЛЯ! UnauthRCE одним запросом на 12k камер. One-shot эксплойт без утечек и множественных запросов.
Подробности: https://modzero.com/en/blog/no-leak-no-problem/