En este post la solución a otro de los retos de 'reversing' de la plataforma Challenge Land.
Se trata del reto "Reversing 1" y mi valoración sobre su dificultad es: ★☆☆☆☆.
Su enunciado dice lo siguiente:
Get the correct serial stack.
Y nos dan un archivo ejecutable (level1.exe).
Solución: Ejecuto este fichero y se me pide que introduzca un número de serie:
Introduzco una cadena cualquiera de caracteres y dígitos, por ejemplo: abc123, y se muestra un mensaje de error:
Como en retos anteriores de 'reversing' que he puesto en este blog, utilizo OllyDbg y empiezo el análisis buscando todas las cadenas de texto o 'strings' utilizadas en el programa (en la parte superior izquierda de la ventana principal: clic botón derecho, 'Search for' > 'All referenced strings'):
Y obtengo lo siguiente:
Como se observa en la figura anterior, entre las cadenas de texto está el mensaje de error que me ha aparecido al ejecutar el programa: "Wrong.", y también el mensaje que supuestamente aparecerá si introduzco el número de serie correcto: "Well done.". Si hago doble clic sobre este último voy a la parte del código donde se encuentra esta cadena de texto:
Pongo un punto de interrupción en la instrucción CALL que llama a la función strcmp que se encuentra cuatro líneas más arriba (clic botón derecho sobre ella, 'Breakpoint' > 'Toggle') para que cuando ejecute el programa en modo depuración ('debug mode') éste se detenga en dicha instrucción y pueda ver que dos cadenas compara:
Tras ejecutar el programa en modo depuración, 'Run debugged application (F9)', introduzco otra vez abc123 como número de serie, pulso 'Enter' y el programa se detiene en el punto de interrupción que acabo de colocar.
Veo que el registro EAX contiene la dirección a partir de la cual se almacena una cadena de caracteres ("Kcgcv8LsmV3nizfJ") y el registro EDX contiene otra dirección a partir de la cual se almacena la cadena de caracteres que he introducido como número de serie ("abc123"), y que ambas entran como parámetros a la función strcmp.
Por tanto, la solución a este resto es: Kcgcv8LsmV3nizfJ
Se trata del reto "Reversing 1" y mi valoración sobre su dificultad es: ★☆☆☆☆.
Su enunciado dice lo siguiente:
Get the correct serial stack.
Y nos dan un archivo ejecutable (level1.exe).
Solución: Ejecuto este fichero y se me pide que introduzca un número de serie:
Introduzco una cadena cualquiera de caracteres y dígitos, por ejemplo: abc123, y se muestra un mensaje de error:
Como en retos anteriores de 'reversing' que he puesto en este blog, utilizo OllyDbg y empiezo el análisis buscando todas las cadenas de texto o 'strings' utilizadas en el programa (en la parte superior izquierda de la ventana principal: clic botón derecho, 'Search for' > 'All referenced strings'):
Y obtengo lo siguiente:
Como se observa en la figura anterior, entre las cadenas de texto está el mensaje de error que me ha aparecido al ejecutar el programa: "Wrong.", y también el mensaje que supuestamente aparecerá si introduzco el número de serie correcto: "Well done.". Si hago doble clic sobre este último voy a la parte del código donde se encuentra esta cadena de texto:
Pongo un punto de interrupción en la instrucción CALL que llama a la función strcmp que se encuentra cuatro líneas más arriba (clic botón derecho sobre ella, 'Breakpoint' > 'Toggle') para que cuando ejecute el programa en modo depuración ('debug mode') éste se detenga en dicha instrucción y pueda ver que dos cadenas compara:
Tras ejecutar el programa en modo depuración, 'Run debugged application (F9)', introduzco otra vez abc123 como número de serie, pulso 'Enter'
Veo que el registro EAX contiene la dirección a partir de la cual se almacena una cadena de caracteres ("Kcgcv8LsmV3nizfJ") y el registro EDX contiene otra dirección a partir de la cual se almacena la cadena de caracteres que he introducido como número de serie ("abc123"), y que ambas entran como parámetros a la función strcmp.
Por tanto, la solución a este resto es: Kcgcv8LsmV3nizfJ
Comentarios
Publicar un comentario