Давно не писал.
Решил выложить другой вариант прохождения таска.
Открываем IDA и смотрим декомпилированный код функции main.
Видим, что читаем 85 байт в переменную mem. Посмотрим на нее:
Видим, что она находится в _bss сегменте (неинициализированные переменные). Видим, что сегмент этот на чтение/запись только, хотя название таска и категории какбы намекает, что нушно шелкодить.
Возвращаемся и смотрим снова в main. Вызывается какая-то странная фнукция, а дальше идет запуск кода из mem, но как это может запуститься из RW сегмента?
Смотрим функцию change_page_permissions_of_address:
Интересно... Гуглим, читаем что такое mprotect и как оно работает. (man mprotect). Понимаем, что меняются разрешения для этой памяти.
Узнаем, что PROT_READ = 1 PROT_WRITE = 2 PROT_EXEC = 4, тем самым получается, что у нас тут память эта станет выполняемой, это уже годится.
Так как у нас pwn, то будем использовать pwn.
Что делает скрипт:
1. Генерирует стандартный шеллкод.
2. Ждет "приветствия" от проги (локально или удаленно)
3. Посылает шелкод
4. Переходим в интерактивный режим, что бы можно было вводить команды.
В скрипте указаны команды, которые помогут быстро найти флаг =))
PWNED
Решил выложить другой вариант прохождения таска.
Открываем IDA и смотрим декомпилированный код функции main.
Видим, что читаем 85 байт в переменную mem. Посмотрим на нее:
Видим, что она находится в _bss сегменте (неинициализированные переменные). Видим, что сегмент этот на чтение/запись только, хотя название таска и категории какбы намекает, что нушно шелкодить.
Возвращаемся и смотрим снова в main. Вызывается какая-то странная фнукция, а дальше идет запуск кода из mem, но как это может запуститься из RW сегмента?
Смотрим функцию change_page_permissions_of_address:
Интересно... Гуглим, читаем что такое mprotect и как оно работает. (man mprotect). Понимаем, что меняются разрешения для этой памяти.
Узнаем, что PROT_READ = 1 PROT_WRITE = 2 PROT_EXEC = 4, тем самым получается, что у нас тут память эта станет выполняемой, это уже годится.
Так как у нас pwn, то будем использовать pwn.
Что делает скрипт:
1. Генерирует стандартный шеллкод.
2. Ждет "приветствия" от проги (локально или удаленно)
3. Посылает шелкод
4. Переходим в интерактивный режим, что бы можно было вводить команды.
В скрипте указаны команды, которые помогут быстро найти флаг =))
PWNED