![]() |
Всем привет.
Решил переключиться на pwn, попробовать, что это и как. Оказалось интересно. Приступим. Скачиваем архив, unzip его и в IDA. В иде смотрим функцию main, жмем F5 для генерации псевдокода. https://forum.antichat.xyz/attachmen...d6d01ff288.png Что мы видим а данном скриншоте, а то, что у нас есть флаг внутри (т.к. приложуха локальная, то и флаг в ней фейковый, но в реальной приложухе должен быть реальный флаг). Далее мы видим что есть вывод текста с последующим запросом ответа от пользователя с помощью scanf (int32 в hex виде) и без ограничения и проверок количества полученных символов, что может привести к преполнению буфера или перетеранию переменных по стеку. Далее видим, что есть вызов функции которая как-то проверяет введенные пользователем значения и если все успешно введено, то делается инкремент balls (наверное баллам). Внутри этой функции подсчитывается куб по полученном значению. https://forum.antichat.xyz/attachmen...f8e622d227.png Что же дальше? Дальше мы видим, что бы получить флаг у нас должно быть 300 баллов, но цикл с расчетами у нас рассчитан всего на 100 баллов. Как же нам честным получить флаг? Азино какое-то =) Штош, значит будем пробовать нечестным путём выиграть в нечестной игре. Смотрим как у нас лежат переменные. https://forum.antichat.xyz/attachmen...f7e7770f56.png Видим, что переменные идут друг за другом - значит можно их переписать (т.к. помним про scanf) Значит надо подгадывать нагрузку. Пробуем в отладке на каждой итерации увеличивать количество символов в нашем ответе и смотрим как меняется память. В итоге получаем нагрузку ААAAAAAAAA и в balls у нас попала ерунда https://forum.antichat.xyz/attachmen...e0e4223be0.png https://forum.antichat.xyz/attachmen...e3bcb115aa.png Но нам там ерунда не нужна, нам там надо 300 (не забываем про hex, 300 будет 012C) Делаем нагрузку 012CAAAAAAAA и получаем в balls 300. Но каждый раз так в цикле делать - можно очень сильно устать, поэтому обратимся к автоматизации. PWN (библиотека?) для питона Она позволяет делать многое, но пока делаем для локальной приложухи. pwn template ./exam Это сделает нам сплоит для того, что бы внутри мы уже внедряли свою нагрузку в автоматическом режиме. Во время работы с локальной приложухой сплоит работал успешно, однако как только я подключился к удаленной - перестал, пришлось отлаживать и менять некоторые вещи и делать ветвление для локальной версии и для удаленной, на будущее, чтобы не забыть. Запуск сплоита для локальной приложухи ./exploit.py LOCAL NOASLR Для удаленной ./exploit.py REMOTE DEBUG Выкладывание кода для копипасты сюда будет равносильно слитию флага, то я выложу только скриншот. https://forum.antichat.xyz/attachmen...5edb282029.png PWNED PS Спасибо участнику комьюнити ROP за указанное направление что почитать. |
Красава, не останавливайся!
|
Цитата:
|
Лучший! Продолжай.
|
Да, пример PWN! Теперь хоть одно задание смогу осилить
|
Все супер, только непонятно:
1) почему 12C стоит в начале пэйлоада 2) почему 'A' 8 штук, хотя 0xB8 - 0xB4 = 4 |
Цитата:
1) little-endian/big-endian. scanf("&lX"); %lx — целое число типа long int со знаком в шестнадцатеричной системе счисления; 2) нам надо записать в саму переменную какое-то значение + переписать соседнюю переменную, обе они по 4 байта. |
| Время: 01:49 |