2011-03-13 27 views
5

Estoy buscando conectar algo de entrada de cadena a un pequeño programa C en el símbolo del sistema de Windows. En bash que podría utilizarBash 'printf' equivalente para símbolo del sistema?

$ printf "AAAAA\x86\x08\x04\xed" | ./program 

Esencialmente, necesito algo para escapar de esos números hexadecimales de símbolo del sistema.

¿Hay un comando equivalente o similar para printf en símbolo del sistema/PowerShell?

Gracias

+1

¿Por qué este exploit etiquetado ...? – Lekensteyn

+0

@Lekensteyn: mira los bytes escapados. Es fácil imaginar que esto podría ser un código. – 0xC0000022L

+0

Debido a que está explotando una vulnerabilidad de desbordamiento de búfer, la necesito. Y las personas que los explotan regularmente pueden saber la respuesta ... –

Respuesta

7

En PowerShell, deberá hacerlo de esta manera:

"AAAAA{0}{1}{2}{3}" -f 0x86,0x08,0x04,0xed | ./program 
+0

'\ x08' de hecho sería el escape para el personaje 8 en bash, por lo que el último ejemplo es correcto. – Joey

+0

Sí, creo que el segundo ejemplo es lo que estaba buscando. Gracias Keith y Joey! –

2

Recientemente me encontré con la misma pregunta a mí mismo y decidí que para alguien el desarrollo de Windows explota vale la pena instalar cygwin :)

De lo contrario se podría construir un pequeño programa en C que imitan la funcionalidad printf 's:

#include <string.h> 

int main(int argc, char *argv[]) 
{ 
    int i; 
    char tmp[3]; 

    tmp[2] = '\0'; 

    if (argc > 1) { 
     for (i = 2; i < strlen(argv[1]); i += 4) { 
      strncpy(tmp, argv[1]+i, 2); 
      printf("%c", (char)strtol(tmp, NULL, 16)); 
     } 
    } 
    else { 
     printf("USAGE: printf.exe SHELLCODE\n"); 
     return 1; 
    } 

    return 0; 
} 

El programa solo maneja cadenas "\ xAB \ xCD", pero no debería ser difícil extenderlo para manejar cadenas "AAAAA \ xAB \ xCD" si es necesario.

Cuestiones relacionadas