Este programa no se puede ejecutar en modo DOS

3

Estoy haciendo un pentest en un cuadro de Windows XP y he logrado un shell con privilegios bajos. Como tal, estoy tratando de escalar mis privilegios. Sin embargo, cada .exe que trato de ejecutar me da "Este programa no se puede ejecutar en modo DOS". ¿Hay algún tipo de configuración que deba cambiar en la caja o hay una estrategia diferente para la escalada de privilegios en un entorno como este? "

    
pregunta Enigmatic Cipher 15.08.2016 - 20:10
fuente

2 respuestas

10

Fondo

Ese mensaje proviene del encabezado básico que tiene cada ejecutable de Windows (formato PE). El mensaje (y el código que lo muestra) es técnicamente editable, pero todos los compiladores parecen emitir simplemente un código que muestra la misma cadena y luego sale. Es un código ejecutable de 16 bits (como un archivo DOS .COM ), destinado a ser mostrado cuando intenta ejecutar el programa en sistemas MS-DOS o sistemas previos a Windows similares. El cargador de programas de Windows normalmente lo omite.

Explicación

Sin embargo, hay un caso en el que Windows puede mostrar ese mensaje: cuando intenta ejecutar un PE compilado para una versión más avanzada de Windows que la que está usando, especialmente si el código principal del programa es para un Arquitectura de CPU diferente a la que el sistema operativo puede soportar. (Esto es similar a, por ejemplo, tratar de ejecutar el código Win32 en DOS de 16 bits.) Desde una GUI, obtendría un error emergente, pero en la línea de comandos, puede que solo reciba ese mensaje.

El candidato obvio aquí es que está intentando ejecutar código en Windows XP (horriblemente obsoleto) y dice que está utilizando "i686- w64 -mingw32-gcc". Si está compilando binarios de 64 bits para Windows XP, es muy probable que no funcionen; Si bien técnicamente existe una versión de XP de 64 bits (en realidad es una versión de kernel diferente, 5.2 vs. 5.1, pero se marca como XP), nunca se usó ampliamente; la gran mayoría de las cajas de XP son solo de 32 bits. Si desea una comprobación rápida de 32 bits frente a 64 bits desde la línea de comandos, verifique la presencia de un directorio \Windows\SysWOW64 (que contiene binarios del sistema de 32 bits en máquinas de 64 bits); si no existe, se está ejecutando en un sistema operativo de 32 bits.

Recomendación

  • A menos que A) necesite 64 bits para algo, y B) sepa que su objetivo es de 64 bits, solo use cargas de 32 bits.
  • Asegúrese de que su código y el compilador estén orientados a XP (Vista y más tarde agregaron un montón de nuevas API que evitarán que un programa que las use se ejecute en XP).
  • Considere girar una máquina virtual XP para probar si sus cargas útiles se ejecutan localmente antes de probarlas en la máquina de destino.
respondido por el CBHacking 16.08.2016 - 01:55
fuente
4

Asegúrese de haber entregado la carga útil correctamente, tuve un problema similar al transferir accesschk.exe a través de ftp. FTP permite la transferencia en modo ascii y binario, si lo transfieres en modo binario debería funcionar.

El modo binario transfiere los archivos, poco a poco, como están en el servidor FTP. El modo Ascii, sin embargo, descargará el texto directamente. Puede escribir ascii o binario para cambiar entre los tipos.

Para hacer esto, conéctese al servicio ftp y escriba "binary", debería obtener una respuesta que diga "200 Type set to I"

vuelva a colocar el archivo y ejecute el archivo ejecutable.

    
respondido por el John Rogers 05.02.2018 - 12:40
fuente

Lea otras preguntas en las etiquetas