PDA

Просмотр полной версии : CTF. Задачка для разминки мозгов (от 5h3ll) : решение


MLNK
25.07.2018, 16:41
Привет!

Не приходилось до этого пользоватся disassemble и вот появился повод - тема от 5h3ll (https://forum.antichat.xyz/threads/1623983/).
В процессе пришлось перечитать кучу форумов и разбора реальных примеров, но попробую изложить в кратце.
Значить так:
Фёрст - скачиваем скрипт и сразу пробуем Antichat, Antichat, Antichat, ybedoc, yBedoC, YbEDOc, Antichat.net, Antichatnet и так далее...
Ноу лак, ноу кукумбер.
Секонд - запускаем


strings Antichat-Simple-CTF


и смортим, нет ли чего интересного:

Код:



/lib64/ld-linux-x86-64.so.2
libc.so.6
puts
__stack_chk_fail
printf
strlen
__cxa_finalize
__libc_start_main
GLIBC_2.4
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
u/UH
=&
=b
Codef
[]A\A]A^A_
%s -
;*3$"
GCC: (GNU) 8.1.0
GCC: (GNU) 8.1.1 20180531
init.c
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.7340
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
codebytestctf.c
__FRAME_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
_ITM_deregisterTMCloneTable
puts@@GLIBC_2.2.5
_edata
strlen@@GLIBC_2.2.5
__stack_chk_fail@@GLIBC_2.4
printf@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
check_pw
__bss_start
main
__TMC_END__
_ITM_registerTMCloneTable
__cxa_finalize@@GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.dynamic
.got
.got.plt
.data
.bss
.comment


Некоторые из этих стрингов попробовал ввести.
Стил ноу цуцумбер.

Далее - командой


objdump -D ./CodeBy-Simple-CTF > out.asm


пишем дамп в файл out.asm.
Так как нам извесны некоторые из сообщений ("Попробуй еще раз", "Необходимо ввести ключ" и "Молодец..."), то можно ныйти то место, где они прописанны.
Чтоб найти букву П, открываем Convert hexadecimal to text - Converters и пишем П.
Получаем d0 9f.
Н > d0 9d, М > d0 9c.
Открываем out.asm и делаем поиск по этим значениям:

https://forum.antichat.xyz/attachments/28995550/img_84dd778246.png

Далее в блоке видно место, где эти сообщения используются.
И между ними видна сама программа.

https://forum.antichat.xyz/attachments/28995550/img_b9c532f77a.png

Но так как "CodeBy" во всех вариантах уже опробован, тут видится некая зеленая подстава.
Дальше под присвоением "CodeBy" видны 6 рядов где появляются значения 2,3,2,3,5,1.
После подсказки от5h3ll (https://forum.antichat.xyz/members/2607616/) о том, что там есть сдвиг по алфавиту, я по таблице ASCII нашел соответствующие буквы.

https://forum.antichat.xyz/attachments/28995550/img_5b57b5abe2.png

Код подошел, но я так и не смог увидеть, где именно происходит замена букв.
В блоке виден цикл и какие-то сравнения, не особо понятные.
После, когда5h3ll (https://forum.antichat.xyz/members/2607616/) показал код программы, стало ясно, что в подается массив из этих 6 цифр (2,3,2,3,5,1), пароль введенный юзером и "CodeBy",
Там делается loop на 6 циклов, где каждая буква из "CodeBy" увеличивается на соответствующую величину из массива и сравнивается с буквой из введенного юзером пароля "ErfhGz".

Тоесть 6 проверок.
Если все проверки верны, то ОК.

В целом disassemble показался интересным, хотя понятно, что много не понятно.
Будем изучать.
На этом пока все.
Всем спасибо, все свободны ))

MLNK
25.07.2018, 17:41
Рад что моя задача пробудила в тебе интерес к реверсу!
хорошая наглядная статья, так же ты первый и единственный из участников форума которые не составят в грей, ред или голд кто решил задачку!

busuzima
20.03.2019, 20:28
А вот тут мой мозг закипел и расплавился... Подскажите, с чего начать реверс, пожалуйста!

MLNK
22.03.2019, 01:16
busuzima сказал(а):

А вот тут мой мозг закипел и расплавился... Подскажите, с чего начать реверс, пожалуйста!


вся статья это решение задачи

busuzima
22.03.2019, 15:18
5h3ll сказал(а):

вся статья это решение задачи


Я имел в виду с чего начать изучение реверса, то бишь реверс-инжиниринга.

MLNK
23.03.2019, 18:58
busuzima сказал(а):

Я имел в виду с чего начать изучение реверса, то бишь реверс-инжиниринга.


ну я бы посоветовал начать с этой книги и сосредоточится на х86 архетектуре.
потом только практика практика и ещё раз практика