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 - cgvwzq

#1
Desafíos - Wargames / Re: Reto MD5
30 Agosto 2010, 14:01 PM
Pude usar los ordenadores de la universidad y en 2h 51m lo tuve crackeado... Parece que esta en base64, te dejo a tí el resto:

Y2h1cGFtZSBlbCBwaWUgY2FyYWR1cmEhIQ==

Salu2!
#2
Nivel Web / Re: Pedido de Hackeo
23 Agosto 2010, 16:53 PM
[img]http://hackmexg.byethost33.com/favicon.ico?[font= onload=alert(1) style=display:none tr=][/font].jpg[/img]

De todas formas el problema no es solo de la imagen:

[url=/][font= onmouseover=alert(1) tr=]A[/font][/url]

Tienes que cambiar el sistema. O haces algo bién con expresiones regulares o coge el que usa SMF, por ejemplo. Te vas a ahorrar muchos dolores de cabeza...

#3
Nivel Web / Re: Pedido de Hackeo
23 Agosto 2010, 16:23 PM
Eso no es una solución:

[img]favicon.ico?[font= onload=alert(/pwn3d/.source) style=display:none tr=][/font][/img]
#4
Nivel Web / Re: ReDoS
23 Agosto 2010, 08:45 AM
El ReDoS de sdc estaba en la aplicación PHP, de modo que lo ejecutaba el servidor. Si estas haciendo las pruebas en javascript, el que va a hacer el trabajo duro es tu navegador.
El navegador se da cuenta de cuándo se produce una situación así y permite detener el script, el php en lugar de eso actuaba suprimiendo 3 carácteres (si no recuerdo mal).

Básicamente, una regexp se ejecuta en el lado del cliente y la otra en la del servidor... ¿Es esto lo que te pasaba? ~.^
#5
Nivel Web / Re: Pedido de Hackeo
23 Agosto 2010, 08:37 AM
@Pavatron, de nada... Probablemente irán saliendo más agujeros... No lo he comprobado, pero ¿hay algún frame buster? Así te evitas problemas de clickjacking.

@averno, para mí eso es un CSRF, en ningún momento hay ninguna redirección. ^^

Saludos!
#6
Nivel Web / Re: Pedido de Hackeo
23 Agosto 2010, 00:04 AM
En el primer caso, hay que quitar la parte del caché de elhacker.net, se pone automáticamente en este foro. En el ejemplo se destruye la sesión y por lo tante el usuario queda desconectado, pero puede extenderse a otras peticiones.

Para solucionar lo del parser del bbcode, lo mejor será que cojas algún módulo de una aplicación segura y lo implementes en tu juego.

Lo de inutilizar la cuenta, fue poniendo en las Opciones el valor -1 al parametro "Ordenar planetas por:". Si juntamos el ataque uno y este se podría inutilizar la cuenta del usuario. Ell problema esta en que comprueba la validez de algunos datos una vez modificados, y se debería hacer antes de modificarlos.
#7
Nivel Web / Re: Pedido de Hackeo
22 Agosto 2010, 20:16 PM
Para empezar esta lleno de CSRFs... Meto una imagen en mi alianza como sigue:

[img] http://hackmexg.byethost33.com/game.php?page=logout[/img]

Y al visitarla cerrará la sesión, si se pueden poner imagenes en mensajes ya se lía parda. Y las opciones de construir edificios, destruirlos, etc, también les pasa lo mismo.

Para el resto de opciones que usan parametros vía POST, simplemente tengo que crear un script en una página externa y hacer que la visiten los usuarios para que hagan lo que uno quiera.

Edito: Si modificamos la url de la carpeta de estilos y ponemos una dirección remota, se podrían monitorear las peticiones que realice el usuario. Es un ataque más elaborado, pero factible.

Se puede inutilizar una cuenta modificando algunos campos con valores incorrectos, por ejemplo los campos de ordenación en el panel de opciones.

XSS: Y ya con esto se puede hacer cualquier cosa... Hay que ponerlo en el code de la alianza.

[img][font= onerror=foo() tr=][/font][/img]
#8
Ejercicios / Re: Retos C/C++
21 Agosto 2010, 21:38 PM
@ghastlyX, la solución lineal es mu chulaa...XD

El programa generará una matriz "sopa de letras" de N x M, usando una función random. A la vez se le pasará una palabra que buscará en la sopa.

- Las letras de la palabra deberán aparecer en orden consecutivo. Podrán estar en horizontal, vertical, diagonal y en orden inverso.
- La sopa de letras contendrá solo minusculas.
- Una vez se encuentra la palabra la búsqueda termina aunque pueda estar repetida (simplifica el problema)

Al finalizar la búsqueda, se imprimirá la sopa de letras con la palabra en mayúsculas (si es que ha sido encontrada), y un mensaje ("Si" o "No") en función de si ha habido éxito.

Entrada:
5 5 pi

Salida:
r v x i l
q l g w f
q c w m n
w q I j j
l q t P q

Si


Entrada:
5 5 zas

Salida:
i v t x u
i l f n y
i e f t l
x j w a k
w e d j o

No


Es bastante sencillo, pero nunca me he planteado un problema de estos, y esto es lo primero que se me ha ocurrido...
#9
Ejercicios / Re: Retos C/C++
21 Agosto 2010, 15:05 PM
Solución trivial O(N³):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {

  int n,*sec,i,j,k;

  if (argc != 2) return 1;

  n = atoi(argv[1]);
  sec = (int*)calloc(n,sizeof(int));
  for (i=0;i<n;i++) scanf("%d",&sec[i]);

  for (i=0;i<n;i++) {
     for (j=i;j<n;j++) {
        sum = 0; for (k=i;k<=j;k++) sum+=sec[k];
        if (sum > max) max = sum;
     }
  }

  printf("%d\n",max);

  free(sec);
  return 0;

}


Solución mejorada, en lugar de sumar cada vez todos los intervalos usamos los datos ya calculados para obtener el nuevo resultado. ¿Es O(N²)?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {

  int n, i, j, **sec, max=0;

  if (argc != 2) return 1;

  n = atoi(argv[1]);
  if (!(sec = (int**)calloc(n,sizeof(int*)))) return 1;
  for (i=0;i<n;i++) if(!(sec[i] = (int*)calloc(n,sizeof(int)))) return 1;

  for (i=0;i<n;i++) scanf("%d",&sec[0][i]);

  for (i=1;i<n;i++)
     for (j=i;j<n;j++) {
        sec[i][j] = sec[i-1][j]+sec[0][j-i];
        if (sec[i][j] > max) max = sec[i][j];
     }
 
  printf("%d\n",max);

  for (i=0;i<n;i++) free(sec[i]); free(sec);

  return 0;

}


Una mejora clara sería reservar menos espacio, ya que estoy usando tan solo media matriz...


#10
Ejercicios / Re: Retos C/C++
20 Agosto 2010, 00:14 AM
Bueno, aunque no es eficiente creo que la idea no es mala del todo. Solo he hecho las dos pruebas del enunciado y funciona bien, pero ya me dirás si he hecho algún disparate.

El caso es que los valores de 'N' y 'M' se pasan por argumento, y se van pidiendo las 'M' 2-tuplas de parejas, en el momento en que una viole el "tratado de nogays" se muestra el 'No'. Si el final es consistente mostrará el 'Si'. De cualquier forma podría mostrar el 'No' al final, eso es facilmente modificable...

#include <stdio.h>
#include <stdlib.h>

int noFuck (int **corral, int g1, int g2, int n);
int addChicken (int **corral, int g1, int g2);

int main(int argc, char **argv) {

   int **corral, n, m, i, gays = 0;
   int g1,g2;

   if (argc != 3) return 1;

   n = atoi(argv[1]);
   m = atoi(argv[2]);

   if (!(corral = (int**)calloc(n,sizeof(int)))) return 1;
   for (i=0;i<n;i++) if (!(corral[i] = (int*)calloc(n/sizeof(int),sizeof(int)))) return 1;

   while (m-- > 0 & !gays) {

      scanf("%d %d",&g1,&g2);
      if (!noFuck(corral,g1,g2,n)) addChicken(corral,g1,g2);// añadimos g1 a parejas de g2 y viceversa
      else gays = 1;

   }

   if (!gays) printf("Si\n"); else printf("No\n");

   for (i=0;i<n;i++) free(corral[i]); free(corral);

   return 0;

}

int noFuck (int **corral, int g1, int g2, int n) {

   int i;

   if (g1 == g2) return 1;
   for (i=0;i<=n/sizeof(int);i++) if (corral[g1][i] & corral[g2][i]) return 1;
   return 0;

}

int addChicken (int **corral, int g1, int g2) {

   corral[g1][g2/sizeof(int)] |= (g2%sizeof(int));
   corral[g2][g1/sizeof(int)] |= (g1%sizeof(int));
   return 0;

}


^^