NOPS en Metasploit

13

Problema

No sé qué es un "NOP" en Metasploit Framework o no.

Lo que sí sé

Metasploit Unleashed dice: "Nops mantiene el tamaño de la carga útil constante". Algunas publicaciones de preguntas mencionan desbordamientos de búfer.

Lo que me gustaría saber

¿Por qué los Nops mantienen consistentes los tamaños de carga útil? ¿Con qué mantienen los tamaños de carga útil los nops? ¿Qué es un Nop, exactamente? ¿Un acrónimo? ¿Un seudónimo? ¿Significa algo más largo?

¿Es un "nop" un proceso o datos? (Por ejemplo: ¿"ejecutas" un nop o "envías" un nop?) ¿Por qué los llaman "trineos" y "trineos"? (Estoy deduciendo que ambos nombres se refieren a la cosa con la que te deslizas por las colinas en el invierno, lo que parece implicar que un "nop" de alguna manera lubrica algún tipo de transacción de datos)

Donde ya he buscado respuestas

enlace

enlace

enlace

enlace

enlace

enlace

    
pregunta gal 07.02.2013 - 23:04
fuente

1 respuesta

14

En el código de ensamblaje, NOP es la abreviatura de No OPeration. Esto es más conocido por los chips x86 como 0x90 . Cuando un procesador carga esa instrucción, simplemente no hace nada (al menos útil) para un ciclo y luego avanza el registro a la siguiente instrucción.

  

Los NOP mantienen consistentes los tamaños de carga útil

... asegurándose de que cualquier espacio no utilizado por otro código será ejecutable válidamente por el procesador sin efectos secundarios. Este " trineo NOP " también es la fuente de nombres cómicos como los ganadores de DEFCON 19 CTF European Nopsled Team .

La importancia práctica de esto tiene que ver con escribir instrucciones saltos . Los saltos pueden ser de un salto relativo (lea la memoria 8 bytes antes de donde está ahora) o de un salto absoluto (lea la memoria ubicada en la posición 0x874710). Si mueve los datos con un salto absoluto, debe recodificar cualquier referencia a ellos. Si mueve una instrucción en relación a otra, también debe recodificar los saltos relativos. Poner NOP en simplifica el problema porque un salto que cae en cualquier parte de una serie de NOP continuará hasta la primera instrucción ejecutable y evitará que el procesador lea un código no válido que detendría la ejecución y bloquearía el software.

Lo más frecuente es que, si sabes que el puntero de la pila apuntará a un rango continuo de direcciones de memoria, lo rellenarías con NOP y luego colocarías tu código.

Echa un vistazo a este tutorial de escritura de shellcode que explica cuándo utiliza NOP para obtener una mejor comprensión.

    
respondido por el Jeff Ferland 07.02.2013 - 23:10
fuente

Lea otras preguntas en las etiquetas