![]() |
https://forum.antichat.xyz/attachmen...2551931793.png
Ку, киберрекруты. Чет давно цтфки не гамал. Зашел на днях почекать ctftime и наткнулся на какой-то CybergonCTF и заинтересовал меня там один таск на пывн. По своей сути он простой, но для новичков в бинарщине то, что надо. Поэтому данная статья именно для них. Описание https://forum.antichat.xyz/attachmen...2551999754.png Из описания задания, как обычно, толком никакой информации. Название может натолкнуть на мысль, что нужно будет что-то делать с рандомом Начнем Первым делом нужно сделать первичный анализ бинаря. К этому относится:
автоматически и выводит все в одно окно - J0llyTr0llz После клонирования репозитория и установки всех библиотек Код:
sudo ./setuptools/shможно ее запустить Код:
python3 main.pyhttps://forum.antichat.xyz/attachmen...2552125250.png Нажимаем сочитание клавиш Код:
Ctrl+OКод:
readelfhttps://forum.antichat.xyz/attachmen...2552146179.png Код:
filehttps://forum.antichat.xyz/attachmen...2552160531.png нет Код:
UPXhttps://forum.antichat.xyz/attachmen...2552176696.png Теперь посмотрим на Код:
stringsКод:
Ctrl+SКод:
/bin/shЕсли в названии есть слово рандом, то скорее всего присутсвуют соответсвущие строки: https://forum.antichat.xyz/attachmen...2552215034.png Теперь нужно поиграть с сервисом, чтобы понять его возможности. Сначала вводим имя, потом 10 рандомных цифр https://forum.antichat.xyz/attachmen...2552238382.png Пока ничего не понятно. Поэтому настало время реверса. Реверс Традиционно буду использовать IDA Pro и edb. Первое, что бросается в глаза, так это самое начало программы: https://forum.antichat.xyz/attachmen...2552267676.png Здесь вводим имя и есть интересные моменты с Код:
seedКод: Код:
call _randКод: Код:
mov eax, [rbp+seed]https://forum.antichat.xyz/attachmen...2552372332.png Теперь посмотрим на локальные переменные: https://forum.antichat.xyz/attachmen...2552385040.png Не вооруженным глазом можно заметить, что Код:
var_80Код:
seedКод:
seedУчасток кода далее уже не несет смысловую нагрузку, потому что он просто рандомит числа и заполняет какой-то глобальный массив интов https://forum.antichat.xyz/attachmen...2552399635.png Далее вводим числа и тоже заполняем уже какой-то второй массив интов https://forum.antichat.xyz/attachmen...2552414565.png Происходит сравнение элементов двух массивов и если все нормас, то выведет сообщение Код:
Correct!Так же есть прикольная функция Код:
potatoКод:
/bin/shhttps://forum.antichat.xyz/attachmen...2552469357.png И так. Имеем следующее: можно переполнить буффер и переписать Код:
seedПишем эксплойт Сначала прога на языке Си, которая выглядит так: C: Код:
#include Код: Код:
[0xffffffe1, 0xef, 0xffffff78, 0xc9, 0xffffff45, 0xdf, 0xffffff2a, 0xffffffa2, 0xd3, 0xffffffe4]Для добития до Код:
seedКод:
seedКод:
0x41414141Код:
AAAAКод:
potatoPython: Код:
junkPython: Код:
ioКод:
killRand()Код: Код:
def killRand():Python: Код:
fromhttps://forum.antichat.xyz/attachmen...2552818334.png Если все сработало, то во первых будет сообщение Код:
Correct!Дошел до этого места, значит полет нормальный https://forum.antichat.xyz/attachmen...2552847297.png Теперь дохожу до инструкции Код:
retКод:
potatoСобственно чтд, вызовется функция Код:
system('/bin/sh')https://forum.antichat.xyz/attachmen...2552878750.png Теперь попробую запустить на сервере и получу RCE: https://forum.antichat.xyz/attachmen...2552889296.png |
| Время: 12:39 |