4) Ejemplo de Aplicación Básica en Java
La siguiente aplicación sirve para mostrar, de forma práctica, los conceptos de clases, objetos, atributos, métodos, herencia...
La aplicación en sí se divide en 3 clases:
- La clase Exploit que define los atributos y métodos de los objetos-Exploit
- La clase WinExploit, heredada de la clase Exploit. Hereda los mismos atributos y métodos que la clase Exploit y, a su vez, define nuevos atributos y métodos a implementar.
- La clase app, que contiene el método Main para la ejecución de la aplicación (clase principal). En esta clase se crean 2 objetos-Exploit y 2 objetos-WinExploit invocando a los métodos Constructores de sus respectivas clases. También accede a los objetos creados a través de sus métodos getters y setters.
Clase Exploit
Clase WinExploit
Clase app
Resultado de la ejecución de la aplicación Java
La siguiente aplicación sirve para mostrar, de forma práctica, los conceptos de clases, objetos, atributos, métodos, herencia...
La aplicación en sí se divide en 3 clases:
- La clase Exploit que define los atributos y métodos de los objetos-Exploit
- La clase WinExploit, heredada de la clase Exploit. Hereda los mismos atributos y métodos que la clase Exploit y, a su vez, define nuevos atributos y métodos a implementar.
- La clase app, que contiene el método Main para la ejecución de la aplicación (clase principal). En esta clase se crean 2 objetos-Exploit y 2 objetos-WinExploit invocando a los métodos Constructores de sus respectivas clases. También accede a los objetos creados a través de sus métodos getters y setters.
Clase Exploit
Código (java) [Seleccionar]
class Exploit
{
//Definimos las variables o atributos
String Autor;
String Vulnerabilidad;
String Lenguaje;
//Constructor - Construye el objeto-exploit e identifica sus atributos
//con los parámetros recibidos.
Exploit(String a, String v, String l)
{
Autor = a;
Vulnerabilidad = v;
Lenguaje = l;
}
//Métodos
String getAutor()
{
return Autor; //Devuelve autor
}
String getVulnerabilidad()
{
return Vulnerabilidad;
}
String getLenguaje()
{
return Lenguaje;
}
String getInfoComun() //Devuelve toda la información de golpe
{
return ("\tAutor: " + Autor + "\n\tVulnerabilidad : " + Vulnerabilidad + "\n\tLenguaje: " + Lenguaje);
}
int setOffset(String o)
{
//Se implementa el parámetro offset en la función que se quiera
System.out.println("\n\n[*] Implementando la direccion offset " + o + " en el exploit...\n");
//Un ejemplo de esta implementación:
//Se configura el código del exploit en C para que necesite como
// parámetro de entrada la direccion offset. Este método de la
// aplicación Java, realizaría una llamada externa al ejecutable
// del exploit y le pasaría como parámetro de entrada, este offset
//Si se ha implementado con exito, el método devuelve 0.
return (0);
}
}
Clase WinExploit
Código (java) [Seleccionar]
class WinExploit extends Exploit
{
//Además de disponer de los atributos heredados de la clase padre...
//Definimos las nuevas variables o atributos a añadir
String CodigoMS;
//Constructor - Construye el objeto-exploit e identifica sus atributos con los parámetros recibidos.
WinExploit(String a, String v, String l, String cms)
{
super(a,v,l); //Estos atributos son implementados por el constructor de la clase padre
CodigoMS = cms;
}
//Además de disponer de los métodos heredados de la clase padre...
//Definimos los nuevos métodos
String getCodigoMS()
{
return CodigoMS;
}
String getInfoWin() //Devuelve toda la información de golpe
{
String s;
s = this.getInfoComun() + "\n\tCogigo MS: " + CodigoMS;
return s;
}
}
Clase app
Código (java) [Seleccionar]
class app
{
public static void main (String[] args)
{
//Creamos dos objetos-Exploit llamando al Constructor
Exploit e1 = new Exploit ("Lion", "Serv-U FTPD SITE CHMOD Command Stack Buffer Overflow", "C");
Exploit e2 = new Exploit ("fiNis", "Jordan Telnet Server Buffer Overflow", "C");
//Creamos dos objetos-WinExploit llamando al Constructor
WinExploit w1 = new WinExploit ("Wirepair", "Windows Workstation Service WKSSVC.DLL Buffer Overflow", "C", "MS03-049");
WinExploit w2 = new WinExploit ("HoD", "Lsasrv.dll RPC buffer overflow", "C", "MS04-011");
//Imprimimos las características de los objetos (se puede hacer de dos formas)
System.out.println("\nInfo de e1\n");
System.out.println("\tAutor: " + e1.getAutor());
System.out.println("\tVulnerabilidad: " + e1.getVulnerabilidad());
System.out.println("\tLenguaje: " + e1.getLenguaje());
System.out.println("\n\nInfo de e2\n");
System.out.println(e2.getInfoComun());
System.out.println("\nInfo de w1\n");
System.out.println("\tAutor: " + w1.getAutor());
System.out.println("\tVulnerabilidad: " + w1.getVulnerabilidad());
System.out.println("\tLenguaje: " + w1.getLenguaje());
System.out.println("\tCodigo MS: " + w1.getCodigoMS());
System.out.println("\n\nInfo de w2\n");
System.out.println(w2.getInfoWin());
int resultado = w2.setOffset("0x7517123c");
if (resultado == 0)
{
System.out.println("[!] La direccion offset se implemento con exito\n");
}
else
{
System.out.println("[!] Error durante la implementacion de la direccion offset\n");
}
}
}
Resultado de la ejecución de la aplicación Java