¿Es posible "codificar" una oración de bash?

0

Hace poco resolví un desafío de CTF que me pareció bastante extraño. En primer lugar, me dieron una cadena de caracteres que, por más que trate de encontrar una respuesta, no la puedo encontrar. Voy a publicar una parte. de esa cadena para tener una respuesta que pueda guiarme y no sabotear el desafío:

D''_$^"7m5X32Vxfvu?1NMpLml$jGFggUdSbb}<{)]xqpunm3qpohmfe+Lbgf_^]#a'Y^WVz=<XWVONrLQJINGkEiIHG)?c&BA:?>=<5Y

Lo primero que pensé es que no puede ser un tipo de hash, nunca he visto algo así, así que después de buscar pistas encontré una posible respuesta y puse esta cadena en el símbolo del sistema, y esto fue el resultado:

root@localhost:~/Folder# (here goes the chain)
>

Es como cuando pones "python" y te permite continuar escribiendo oraciones en el idioma, después de eso intenté pegar otros bloques de la cadena y recibí mensajes como este:

bash: (chain): event not found
bash: command substitution:

¿Es posible que sea una declaración de bash codificada y, de ser así, cómo puedo decodificarla o entenderla? Si no es lo que pienso entonces exactamente?

Espero que puedas guiarme

    
pregunta Julián 10.02.2018 - 02:43
fuente

1 respuesta

3

No sé qué es esa cadena de caracteres, pero claramente no es un comando de shell. Lo que está sucediendo es que bash está intentando interpretar y actuar sobre varios metacaracteres de shell en la cadena, pero se usan de maneras que no tienen ningún sentido, por lo que bash está obteniendo errores y / o haciendo cosas que no hacen nada. sentido.

Específicamente: la cadena que vinculó comienza con "D" seguida de una comilla simple. Cuando bash ve una comilla simple, la trata como el comienzo de una sección citada de la línea de comando. No hay una segunda comilla simple para marcar el final de la sección citada, por lo que cuando presiona regresar después de ingresarla, el shell cree que está ingresando una cadena de varias líneas. El mensaje ">" es un mensaje de continuación estándar de bash, que indica que aún no ha ingresado un comando completo y que debe continuar hasta que llegue a un punto de detención válido (es decir, no en medio de una cadena entre comillas) .

Los otros mensajes que informe tienen que ver con otros metacaracteres en los bloques de su cadena:

  • bash trata "!" como el inicio de una sustitución de historial, es decir, reutilizar todo o parte de un comando anterior (histórico) (un "evento" pasado); lo que viene después del "!" indica qué "evento" desea reutilizar, pero no coincide con nada, por lo que recibe un mensaje de "evento no encontrado".

  • bash trata backquotes como indicadores de sustituciones de comandos, es decir, ejecuta lo que está en backquotes como un comando, y luego sustituye la salida de ese comando en la línea de comandos actual. No sé exactamente cuál es el texto o error relevante, pero aparentemente hay algo que no tiene sentido entre un par de citas atrás, por lo que el shell se está quejando.

respondido por el Gordon Davisson 10.02.2018 - 03:12
fuente

Lea otras preguntas en las etiquetas