Skip to content

Latest commit

 

History

History

arbalest_shop

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Pwn | Arbalest shop

Информация

Наши разведчики обнаружили магазин по продаже арбалетов.

Мы не смогли найти там уязвимость, но может у тебя получится.

У нас есть исполняемый файл и адрес, где этот магазин находится.

Посмотри, может у тебя получиться найти уязвимость и проэксплуатировать её.

nc <ip> <port>

flag in /tmp/flag.txt

Запуск

Отдать командам бинарник из deploy/static и ip-адрес сервера

cd deploy
docker-compose up --build -d 

Описание

ELF 64bit, C, no strip, no pack

Суть задания - проэксплуатировать переполнение глобального буфера через структуру из 4 полей.

Решение

Основная концепция решения - это перезапись printf_function_table и printf_arginfo_table для переопределения вызываемых функций для модификаторов формата.

  1. В функции sell_arbalest, при добавлении нового арбалета (также как и в функции insert_in_list) не проверяется выход за границы индекса g_list_index
  2. Таким образом мы можем перезаписывать структурой секцию .bss вниз от нашего буфера
  3. В итоге можно подобрать оффсеты таким образом, что можно переопределить модификатор "%s" с помощью поля "цена" арбалета, которое мы можем контролировать и вводить туда адрес, а "%d" переопределяется указателем на кучу, где хранится имя пользователя.
  4. Можно найти функцию _dl_make_heap_executable и получить выполнение кода на куче
  5. После этого располагаем шеллкод в имени пользователя и вызываем метод "view profile info", который последовательно вызывает "%s" и "%d"
  6. Пример эксплоита представлен ниже

Пример эксплоита

Флаг

Cup{730ba228a7eb2ab23ce309259ab4a5e83df7d12109a7f170d5c04527882217f5}