Skip to content

Latest commit

 

History

History
executable file
·
29 lines (16 loc) · 1.91 KB

README.md

File metadata and controls

executable file
·
29 lines (16 loc) · 1.91 KB

Строки II

Author: @greg0r0

Desc

Занятный факт - в соответствии с некоторым толкованием стандартов строкой можно назвать любую последовательность байт, которая заканчивается нулевым байтом (0x00).

str_2

Flag

ptctf{1ts_y0ur_f1rst_r34l_r3v3rs3_t4sk?}

Solve

Тут уже не получится просто стрингануть бинарь :)

Если открывать файл в любом инструменте для проведения анализа бинарей, то надо идти от того, что сравнивается. Для начала проверим что strncmp является библиотечной функцией - тут все ок.

Значит надо проверить значение, с которым все сравнивается. Один из аргументов - это буффер ввода. Другой - вроде как указывает на флаг, но флаг то фейковый...

Хотя если посмотреть cross-references (места, где эта переменная используется) - то можно заметить, что флаг то используется в двух разных функциях!

Смотрим, что в эту функцию записывается оффсет поксоренного значения - тут и расшифровывается настоящий флаг. А сама фукнция помещена в .init_array. Это массив функций, который выполняется перед вызовом main.

Подробнее про .init_array и запуск программы можно почитать, например, тут.