Personalmente he aprendido mucho desde que participo e intento desarrollar los retos o los CTF del 24x7 de hacktoria, hace poco se libero uno nuevo diseñado por Joey
Sin embargo por temas laborales apenas pude empezar a jugarlo y aceptar el reto de joey
Analicemos el reto y su enunciado
Básicamente se nos da un archivo que se logro obtener del celular del presunto alien “acosador” y se necesita analizarlo para poder identificar al alienigena , la flag es FLAG{NAMEALIEN} (el nombre del alien).
El archivo se llama alien , al analizarlo podemos ver que es un binario de linux ejecutable
al ejecutarlo siempre imprime : checksum: 89
Despues de analizarlo en gdb rapidamente lo primero que veo es que no hay mucha informacion despues de ejecutar , asi mismo no me permitio avanzar en los info registers
por lo que opte por desensamblar el “main” al hacerlo observe que habian unas direcciones con comentarios
la primera veo que se alcanzaba a leer la palabra alien. por lo que procedí a desensamblar la dirección 0x13a00
al analizar estos registros
mov $0x50,%al
yadd $0x4,%al
: Esto carga el valor0x50
(ASCII 'P') en el registroal
y le suma0x4
, obteniendo0x54
(ASCII 'T').mov $0x40,%r8b
yadd $0xf,%r8b
: Carga0x40
(ASCII '@') y le suma0xF
, lo que da0x4F
(ASCII 'O').mov $0x40,%r9b
yadd $0xd,%r9b
: Carga0x40
(ASCII '@') y le suma0xD
, resultando en0x4D
(ASCII 'M').mov $0x40,%cl
yadd $0x1,%cl
: Carga0x40
(ASCII '@') y le suma0x1
, resultando en0x41
(ASCII 'A').mov $0x40,%r10b
yadd $0xc,%r10b
: Carga0x40
y le suma0xC
, resultando en0x4C
(ASCII 'L').mov $0x40,%dl
yadd $0x9,%dl
: Carga0x40
y le suma0x9
, obteniendo0x49
(ASCII 'I').mov $0x40,%sil
yadd $0x5,%sil
: Carga0x40
y le suma0x5
, resultando en0x45
(ASCII 'E').mov $0x40,%dil
yadd $0xe,%dil
: Carga0x40
y le suma0xE
, obteniendo0x4E
(ASCII 'N').
Después de las instrucciones de suma, los valores en los registros forman las letras:
T
O
M
A
L
I
E
N
ya luego lo meti en el formato de flag esperado
FLAG{TOMALIEN}
logrando abrir el zip y reclamar este hermoso badge
Al desarrollar este reto, me di cuenta de la importancia de seguir un proceso estructurado al abordar desafíos de reversing. Aunque aún soy nuevo en esta categoría y no me considero un experto, he aprendido que desensamblar funciones, validar el tipo de archivo e incluso realizar un objdump son pasos fundamentales para comprender completamente los archivos con los que trabajamos en este tipo de retos.
Mantener una metodología clara no solo ayuda a descifrar la lógica del programa, sino que también facilita el análisis de las diferentes secciones del código, lo que resulta esencial para avanzar de manera efectiva en desafíos de reversing.