elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Recoger cookie de javascript con cliente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recoger cookie de javascript con cliente  (Leído 1,735 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Recoger cookie de javascript con cliente
« en: 9 Noviembre 2014, 12:50 pm »

Hola, miren estoy intentando iniciar sesión en una página web (si están interesados mandanme un privado les invito a intentarlo), lo que ocurre es que accedo al directorio login y envío un POST con las variables usuario y pass, vale luego recibo que me redirige a la página principal, hago una petición a la principal con las nuevas cookies y parece que recojo el html de la principal (osea que para eso podía haber hecho solo un POST a la principal y recoger datos luego inútil).

El problema es que no soy capaz de iniciar sesión, he probado con firefox y LIVE HEADERS para ver como inicia sesión y al parecer le ocurre algo parecido los 2 primeros pasos iguales luego firefox comienza a descargar archivos, imagenes etc (cosas que yo no necesito).

Tras muuchos POST de firefox, acaba recibiendo la cookie mágica JESSISID=293jf9239ur por ejemplo, ¿cómo puedo consguirla?, ¿cómo funciona esto de los javascript y como puedo interpretarlos en mi cliente que inicia sesión?.

Pues los js creo que son usados para cargar cookies, creo que lo que tengo que hacer es ir probando POST (pero a que páginas porque del index no salgo), y al recoger su HTML ¿debería proceder a buscar el javascript de las cookies? Y cuando recoja esa cadena como debería interpretarla, es un script en otro lenguaje.

En fin, orientadme un poco con esto si podéis, ¿como haríais vosotros para iniciar sesión en una pagína y mantener esa sesión usando HTTP evidentemente? gracias.


En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Recoger cookie de javascript con cliente
« Respuesta #1 en: 11 Noviembre 2014, 16:06 pm »

¿De que estamos hablando aquí exactamente? ¿Estás haciendo una peticion curl? ¿Que es lo que llevas de código?


En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Recoger cookie de javascript con cliente
« Respuesta #2 en: 12 Noviembre 2014, 10:10 am »

No uso curl, uso cpp al natural. De lo que se trata es de iniciar una sesión en una página web, conseguirme loguear dentro de ella. Para ello debo usar HTPP y realizar varias peticiones hasta conseguir la cookie que dentifica mi sesión, una cookie llamada JESESSID: 89u328fi3hf...

Pero no se a qué páginas debo de hacer la petición (por ejemplo voy al /login) y hago un POST con las variables usuario y contraseña, de ahí me redirige a la página principal mando las cookiesde la anterior y no pasa nada, en LIVE HEADERS ocurría lo mismo pero luego firefox empezaba a descargar cosas y mandaba peticiones que no sabía de dónde salían.

Mi código actual para intentar iniciar la sesión:

Código
  1. #include "Peticiones.h"
  2.  
  3. int inicia_sesion(char* usuario, char *contraseña)
  4. {
  5. WSADATA wsa;
  6. SOCKET sock;
  7. unsigned short tamaño;
  8. struct sockaddr_in directorio;
  9. char datos[20000], variables[500];
  10. char cookie[1000], auxiliar[50];
  11.  
  12. WSAStartup(MAKEWORD(2, 0), &wsa);
  13. if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
  14. {
  15. printf("Se ha producido un error al inicializar el socket.");
  16. exit(0);
  17. }
  18. else
  19. {
  20. directorio.sin_family = AF_INET;
  21. directorio.sin_port = htons(PUERTO);
  22. directorio.sin_addr.s_addr = inet_addr(IP);
  23. connect(sock, (struct sockaddr*)&directorio, sizeof(directorio));
  24.  
  25. strcpy_s(variables, "email=");
  26. strcat_s(variables, usuario);
  27. strcat_s(variables, "&password=");
  28. strcat_s(variables, contraseña);
  29.  
  30. tamaño = strlen(variables);
  31. _itoa_s(tamaño, auxiliar, 10);
  32.  
  33. strcpy_s(datos, "POST / HTTP/1.1\r\n");
  34. strcat_s(datos, "Host: dominio.com\r\n");
  35. strcat_s(datos, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0\r\n");
  36. strcat_s(datos, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
  37. strcat_s(datos, "Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3\r\n");
  38. strcat_s(datos, "Referer: http://dominio.com/\r\n");
  39. strcat_s(datos, "Connection: keep-alive\r\n");
  40. strcat_s(datos, "Cache-Control: max-age=0\r\n");
  41. strcat_s(datos, "Content-type: application/x-www-form-urlencoded\r\n");
  42. strcat_s(datos, "Content-length: ");
  43. strcat_s(datos, auxiliar);
  44. strcat_s(datos, "\r\n\r\n");
  45. strcat_s(datos, variables);
  46.  
  47. send(sock, datos, strlen(datos), 0);
  48. printf("mando: %s", datos); system("pause");
  49. strcpy_s(datos, "");
  50. recv(sock, datos, 20000, 0);
  51. printf("recibo: %s", datos); system("pause");
  52.  
  53. FILE *cookies, *caakies;
  54. int tam = strlen(datos), i, j;
  55.  
  56. caakies = fopen("Caakies.txt", "wt");
  57.  
  58. char hookie[500];
  59. for (i = 0; i < tam; i++)
  60. {
  61. if ((datos[i] == 'S') &&
  62. (datos[i + 1] == 'e') &&
  63. (datos[i + 2] == 't') &&
  64. (datos[i + 3] == '-') &&
  65. (datos[i + 4] == 'C') &&
  66. (datos[i + 5] == 'o') &&
  67. (datos[i + 6] == 'o') &&
  68. (datos[i + 7] == 'k') &&
  69. (datos[i + 8] == 'i') &&
  70. (datos[i + 9] == 'e') &&
  71. (datos[i + 10] == ':') &&
  72. (datos[i + 11] == ' '))
  73. {
  74. i = i + 12;
  75. j = 0;
  76. while (datos[i] != '\n')
  77. {
  78. cookie[j] = datos[i];
  79. i++;
  80. j++;
  81. }
  82. cookie[j] = '*';
  83. j = 0;
  84. for (int k = 0; k < strlen(cookie); k++)
  85. {
  86. if (cookie[k] != '*')
  87. {
  88. hookie[j] = cookie[k];
  89. j++;
  90. }
  91. else
  92. {
  93. hookie[j] = '\0';
  94. break;
  95. }
  96. }
  97. fprintf(caakies,"%s\n",hookie);
  98. strcpy_s(cookie, "");
  99. strcpy_s(hookie, "");
  100. }
  101. }
  102. fclose(caakies);
  103.  
  104. caakies = fopen("Caakies.txt","rt");
  105. cookies = fopen("Cookies.txt", "wt");
  106. char almacena[10][500];
  107. int coincidencia = 0;
  108.  
  109. i = 0;
  110. printf("entro");
  111. while (fgets(cookie, 400, caakies) && strcmp(cookie, "") != 0)
  112. {//falta poner que se quede con la ultima cookie.
  113. coincidencia = 0;
  114. strcpy_s(almacena[i], cookie);
  115. i++;
  116. for (int j = 0; j < i; j++)
  117. {
  118. if (strcmp(almacena[j], cookie) == 0)
  119. {
  120. coincidencia = 1;
  121. }
  122. }
  123. if (coincidencia != 1)
  124. {
  125. fprintf(cookies, "%s", cookie);
  126. }
  127. }
  128. printf("salgo");
  129.  
  130. system("pause");
  131.  
  132. cookies = fopen("Cookies.txt", "rt");
  133. strcpy_s(datos, "POST / HTTP/1.1\r\n");
  134. strcat_s(datos, "Host: dominio.com\r\n");
  135. strcat_s(datos, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0\r\n");
  136. strcat_s(datos, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
  137. strcat_s(datos, "Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3\r\n");
  138. strcat_s(datos, "Referer: http://dominio.com/\r\n");
  139. while (fgets(cookie,400,cookies) && strcmp(cookie, "") != 0)
  140. {//fscanf(cookies,"%s\n",cookie)>0
  141. cookie[strlen(cookie)-1] = '\0';
  142. strcat_s(datos, "Cookie: ");
  143. strcat_s(datos, cookie);
  144. strcat_s(datos, "\r\n");
  145. }
  146. strcat_s(datos, "Connection: keep-alive\r\n");
  147. strcat_s(datos, "Cache-Control: max-age=0\r\n");
  148. strcat_s(datos, "Content-type: application/x-www-form-urlencoded\r\n");
  149. strcat_s(datos, "Content-length: ");
  150. strcat_s(datos, auxiliar);
  151. strcat_s(datos, "\r\n\r\n");
  152. strcat_s(datos, variables);
  153. fclose(cookies);
  154.  
  155. send(sock, datos, strlen(datos), 0);
  156. printf("mando: %s", datos); system("pause");
  157. strcpy_s(datos, "");
  158. recv(sock, datos, 20000, 0);
  159. printf("recibo: %s", datos); system("pause");
  160.  
  161. cookies = fopen("Cookies.txt", "wt");
  162. tam = strlen(datos);
  163. strcpy(hookie,"");
  164. for (i = 0; i < tam; i++)
  165. {
  166. if ((datos[i] == 'S') &&
  167. (datos[i + 1] == 'e') &&
  168. (datos[i + 2] == 't') &&
  169. (datos[i + 3] == '-') &&
  170. (datos[i + 4] == 'C') &&
  171. (datos[i + 5] == 'o') &&
  172. (datos[i + 6] == 'o') &&
  173. (datos[i + 7] == 'k') &&
  174. (datos[i + 8] == 'i') &&
  175. (datos[i + 9] == 'e') &&
  176. (datos[i + 10] == ':') &&
  177. (datos[i + 11] == ' '))
  178. {
  179. i = i + 12;
  180. j = 0;
  181. while (datos[i] != ';')
  182. {
  183. cookie[j] = datos[i];
  184. i++;
  185. j++;
  186. }
  187. cookie[j] = '*';
  188. j = 0;
  189. for (int k = 0; k < strlen(cookie); k++)
  190. {
  191. if (cookie[k] != '*')
  192. {
  193. hookie[j] = cookie[k];
  194. j++;
  195. }
  196. else
  197. {
  198. hookie[j] = '\0';
  199. break;
  200. }
  201. }
  202. fprintf(cookies, "%s\n", hookie);
  203. strcpy_s(cookie, "");
  204. strcpy_s(hookie, "");
  205. }
  206. }
  207. fclose(cookies);
  208. closesocket(sock);
  209. }
  210. return 1;
  211. }
  212.  

Hago un POST  la página de login subiendo usuario y contraseña, una vez recogidas las cookies que me devuelve hago otro POST a la principal pues al mandar el POST del login me hace un MOVED TEMPORALY a la principal, así que voy a la principal mando cookies de la anterior que por cierto me manda 2 cookies que se llaman igual (en este caso debería quedarme con la última enviada, por cierto estaba haciendo ese código ahora y los archivos de cookies pueden fallar).

De todo esto me gustaría saber si para iniciar sesión en qué me tengo que fijar. Oí que en los javascript, en ese caso sería descargar el HTML, buscar document.cookie(...) habría que hacer eso, ¿qué más métodos pueden usar para meterme una cookie, y cómo yo debo hacer para interpretarla?. Gracias y saludos, subiré más cuando vuelva a ello, interesados en probar con la página que me manden MP.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
recoger parámetro de cliente rdp
Programación Visual Basic
atm0013 0 968 Último mensaje 14 Marzo 2008, 14:50 pm
por atm0013
[javascript] ¿Por qué se borra la cookie al reiniciar el navegador?
Desarrollo Web
ali... 4 3,933 Último mensaje 24 Marzo 2011, 17:14 pm
por ali...
javascript - Socket Cliente
Desarrollo Web
sebah97 2 1,730 Último mensaje 19 Abril 2013, 05:07 am
por sebah97
MVC en la parte del cliente (javascript)
Desarrollo Web
dimitrix 0 1,615 Último mensaje 24 Agosto 2014, 05:54 am
por dimitrix
La cookie Datr de Facebook, en el punto de mira por recoger datos de usuarios...
Noticias
wolfbcn 0 1,149 Último mensaje 29 Noviembre 2015, 21:27 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines