CTF Код ракушки (writeup)

yetiraki

Green Team
07.02.2023
63
108
BIT
441
Давно не писал.
Решил выложить другой вариант прохождения таска.

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


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

02_IDA_bss_mem.PNG


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

03_IDA_mprotect.PNG

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

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


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

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

PWNED
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!