• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Cherimoya Eihn
  • Дата начала
  • Теги
    ctf
C

Cherimoya Eihn

Привет!

Не приходилось до этого пользоватся disassemble и вот появился повод - тема от 5h3ll.
В процессе пришлось перечитать кучу форумов и разбора реальных примеров, но попробую изложить в кратце.
Значить так:
Фёрст - скачиваем скрипт и сразу пробуем codeby, CodeBy, cODEbY, ybedoc, yBedoC, YbEDOc, codeby.net, codebynet и так далее...
Ноу лак, ноу кукумбер.
Секонд - запускаем
strings CodeBy-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.
Так как нам извесны некоторые из сообщений ("Попробуй еще раз", "Необходимо ввести ключ" и "Молодец..."), то можно ныйти то место, где они прописанны.
Чтоб найти букву П, открываем и пишем П.
Получаем d0 9f.
Н > d0 9d, М > d0 9c.
Открываем out.asm и делаем поиск по этим значениям:
Capture.PNG


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


Но так как "CodeBy" во всех вариантах уже опробован, тут видится некая зеленая подстава.
Дальше под присвоением "CodeBy" видны 6 рядов где появляются значения 2,3,2,3,5,1.
После подсказки от 5h3ll о том, что там есть сдвиг по алфавиту, я по таблице ASCII нашел соответствующие буквы.
Capture.PNG


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

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

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

Вложения

  • Capture.PNG
    Capture.PNG
    52 КБ · Просмотры: 291
  • Capture.PNG
    Capture.PNG
    55,6 КБ · Просмотры: 300
  • 1532521509161.png
    1532521509161.png
    446,9 КБ · Просмотры: 285
Последнее редактирование модератором:

MLNK

Mod. Ethical Hacking
Red Team
23.01.2018
560
706
BIT
1
Рад что моя задача пробудила в тебе интерес к реверсу!
хорошая наглядная статья, так же ты первый и единственный из участников форума которые не составят в грей, ред или голд кто решил задачку!
 

busuzima

Green Team
22.02.2019
41
16
BIT
0
А вот тут мой мозг закипел и расплавился... Подскажите, с чего начать реверс, пожалуйста!
 

MLNK

Mod. Ethical Hacking
Red Team
23.01.2018
560
706
BIT
1
Я имел в виду с чего начать изучение реверса, то бишь реверс-инжиниринга.
ну я бы посоветовал начать с этой книги и сосредоточится на х86 архетектуре.
потом только практика практика и ещё раз практика
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!