HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.07.2023, 15:39
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Всем привет.

Решил переключиться на pwn, попробовать, что это и как. Оказалось интересно.
Приступим. Скачиваем архив, unzip его и в IDA.

В иде смотрим функцию main, жмем F5 для генерации псевдокода.



Что мы видим а данном скриншоте, а то, что у нас есть флаг внутри (т.к. приложуха локальная, то и флаг в ней фейковый, но в реальной приложухе должен быть реальный флаг).
Далее мы видим что есть вывод текста с последующим запросом ответа от пользователя с помощью scanf (int32 в hex виде) и без ограничения и проверок количества полученных символов, что может привести к преполнению буфера или перетеранию переменных по стеку.

Далее видим, что есть вызов функции которая как-то проверяет введенные пользователем значения и если все успешно введено, то делается инкремент balls (наверное баллам). Внутри этой функции подсчитывается куб по полученном значению.



Что же дальше? Дальше мы видим, что бы получить флаг у нас должно быть 300 баллов, но цикл с расчетами у нас рассчитан всего на 100 баллов. Как же нам честным получить флаг? Азино какое-то =)

Штош, значит будем пробовать нечестным путём выиграть в нечестной игре. Смотрим как у нас лежат переменные.



Видим, что переменные идут друг за другом - значит можно их переписать (т.к. помним про scanf)
Значит надо подгадывать нагрузку.

Пробуем в отладке на каждой итерации увеличивать количество символов в нашем ответе и смотрим как меняется память. В итоге получаем нагрузку ААAAAAAAAA и в balls у нас попала ерунда





Но нам там ерунда не нужна, нам там надо 300 (не забываем про hex, 300 будет 012C)
Делаем нагрузку 012CAAAAAAAA и получаем в balls 300. Но каждый раз так в цикле делать - можно очень сильно устать, поэтому обратимся к автоматизации. PWN (библиотека?) для питона
Она позволяет делать многое, но пока делаем для локальной приложухи.

pwn template ./exam
Это сделает нам сплоит для того, что бы внутри мы уже внедряли свою нагрузку в автоматическом режиме.
Во время работы с локальной приложухой сплоит работал успешно, однако как только я подключился к удаленной - перестал, пришлось отлаживать и менять некоторые вещи и делать ветвление для локальной версии и для удаленной, на будущее, чтобы не забыть.
Запуск сплоита для локальной приложухи ./exploit.py LOCAL NOASLR
Для удаленной ./exploit.py REMOTE DEBUG

Выкладывание кода для копипасты сюда будет равносильно слитию флага, то я выложу только скриншот.



PWNED

PS
Спасибо участнику комьюнити ROP за указанное направление что почитать.
 
Ответить с цитированием

  #2  
Старый 13.07.2023, 16:26
GoBL1n
Новичок
Регистрация: 02.03.2017
Сообщений: 0
С нами: 4841507

Репутация: 0
По умолчанию

Красава, не останавливайся!
 
Ответить с цитированием

  #3  
Старый 13.07.2023, 18:03
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Цитата:

GoBL1n сказал(а):

Красава, не останавливайся!

Спасибо!
 
Ответить с цитированием

  #4  
Старый 15.07.2023, 00:10
delifer
Новичок
Регистрация: 20.02.2022
Сообщений: 0
С нами: 2226531

Репутация: 0
По умолчанию

Лучший! Продолжай.
 
Ответить с цитированием

  #5  
Старый 15.07.2023, 11:54
Kevgen
Новичок
Регистрация: 11.05.2023
Сообщений: 0
С нами: 1585741

Репутация: 0
По умолчанию

Да, пример PWN! Теперь хоть одно задание смогу осилить
 
Ответить с цитированием

  #6  
Старый 13.05.2024, 21:29
suzu
Новичок
Регистрация: 13.05.2024
Сообщений: 0
С нами: 1055345

Репутация: 0
По умолчанию

Все супер, только непонятно:
1) почему 12C стоит в начале пэйлоада
2) почему 'A' 8 штук, хотя 0xB8 - 0xB4 = 4
 
Ответить с цитированием

  #7  
Старый 14.05.2024, 13:29
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Цитата:

suzu сказал(а):

Все супер, только непонятно:
1) почему 12C стоит в начале пэйлоада
2) почему 'A' 8 штук, хотя 0xB8 - 0xB4 = 4

Спасибо.
1) little-endian/big-endian. scanf("&lX"); %lx — целое число типа long int со знаком в шестнадцатеричной системе счисления;
2) нам надо записать в саму переменную какое-то значение + переписать соседнюю переменную, обе они по 4 байта.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.