ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Код ракушки (writeup) (https://forum.antichat.xyz/showthread.php?t=1643373)

yetiraki 04.05.2024 22:31

Давно не писал.
Решил выложить другой вариант прохождения таска.

Открываем IDA и смотрим декомпилированный код функции main.

https://forum.antichat.xyz/attachmen...376f2b4188.png

Видим, что читаем 85 байт в переменную mem. Посмотрим на нее:

https://forum.antichat.xyz/attachmen...3610a23710.png

Видим, что она находится в _bss сегменте (неинициализированные переменные). Видим, что сегмент этот на чтение/запись только, хотя название таска и категории какбы намекает, что нушно шелкодить.
Возвращаемся и смотрим снова в main. Вызывается какая-то странная фнукция, а дальше идет запуск кода из mem, но как это может запуститься из RW сегмента?
Смотрим функцию change_page_permissions_of_address:

https://forum.antichat.xyz/attachmen...275949cd7b.png

Интересно... Гуглим, читаем что такое mprotect и как оно работает. (man mprotect). Понимаем, что меняются разрешения для этой памяти.
Узнаем, что PROT_READ = 1 PROT_WRITE = 2 PROT_EXEC = 4, тем самым получается, что у нас тут память эта станет выполняемой, это уже годится.

Так как у нас pwn, то будем использовать pwn.

https://forum.antichat.xyz/attachmen...fd031561d1.png

Что делает скрипт:
1. Генерирует стандартный шеллкод.
2. Ждет "приветствия" от проги (локально или удаленно)
3. Посылает шелкод
4. Переходим в интерактивный режим, что бы можно было вводить команды.

В скрипте указаны команды, которые помогут быстро найти флаг =))

PWNED


Время: 19:24