Archivo de la etiqueta: SQL Injection

Solucionario reto hacking enise

Como han quitado el reto no me acuerdo muy bien de algunas pruebas pero algunas soluciones serían:

Nivel 1-A

Había que saltarse la siguiente expresión regular: ^\-(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,}

Una posible solución es: -o=o o=oo o=oO66

Para resolverlo yo cogí y lo dividí en 3 apartados (en una copia en local) y fui saltando uno a uno los filtros:

(?=.*d) -> se pasa con o=0

(?=.*[a-z]) -> se pasa con o=00

(?=.*[A-Z]).{6,} -> se pasa con o=oO66

Esta es una posible solución, pero hay muchísimas.

Nivel 1-B

Editando el fuente de la página vemos al final un comentario con un texto en base64: cDNwMXQwXzA=

Que en texto plano es: p3p1t0_0

Una web para convertir de base64 a ASCII es: http://home2.paulschou.net/tools/xlate/ aunque hay millones

Nivel 1-C

Yo la pasé con la siguiente inyección:

user: enise
pass: ‘ or ‘a’=’a

Nivel 2-A

Nos descargamos el ejecutable y con el PeID vemos que está empaquetado con UPX. Con el OllyDbg quitamos la protección de UPX usando el método de pushad / popad o cualquier otro método, ya que es una protección muy frágil y se puede saltar de muchas formas.

Una vez llegamos al OEP, buscamos en memoria la palabra INCORRECT y al lado está nuestra contraseña: Este3sTuP4$$!

Nivel 2-B

Este no lo pasé pero parece que habían dos carpetas ocultas: bin y log

Nivel 2-C

Yo la pasé con la siguiente inyección:

pass: ‘ or ‘a’=’a’#

Nivel 3-A

Yo la pasé con la siguiente inyección:

user: ‘ or 1=1 or ‘a’=’a
pass: xx

Nivel 3-B

Aquí había que programar. Si probamos todas las combinaciones por fuerza bruta no terminamos nunca así que acotamos aplicando ingeniería inversa, es decir:

^ es un XOR

<<< 8 desplaza 8 bits a la derecha y rellena con ceros a la izquierda

<<< 4 desplaza 4 bits a la derecha y rellena con ceros a la izquierda

Por tanto,

– nuestro valor final debe ser 436 (en hex = 1B4 y en binario = 110110100).

– al meter 4 bits (1 byte) a la derecha, como desconocemos el valor, tendríamos 16 combinaciones, de 0000 a 1111 en binario. Por tanto el resultado oscila entre 6976 y 6991.

– luego multiplicamos por 3 (siempre lo inverso que el javascript original) y por tant0 las combinaciones se disparan, ya que tenemos que multiplicar cada combinación anterior por 3.

– es decir, iria desde 6976*3 (20928) a 6991*3 (20973).

– después, al meter 8 bits (2 bytes) añadimos de 00 a FF, es decir, 256 combinaciones más.

– valor mínimo: 20928 = 51C0 (en hex) … por tanto 51C000 = 5357568 XOR 77886655 = 83211455.

– valor máximo: 20973 = 51ED (en hex) … por anto, 51EDFF = 5369343 XOR 77886655 = 83204416.

– el valor final está entre 83204416 y 83211455 = 7039 combinaciones posibles.

– dentro de estos valores probamos la contraseña si el resultado es 0.

El script  (en perl) que use es este:

#!/usr/bin/perl
use LWP::UserAgent;

my $p = 83204416;
my $res = 0;

while(1) {
 $res = $p ^ 77886655;
 $res = $res >> 8;
 $res = $res / 3;
 $res = $res >> 4;
 $res = $res ^ 436;
 enviar($p) if ($res eq 0);
 $p++;
}
sub enviar {
 my $dato = shift;
 my $cookie = "PHPSESSID=AQUI_MI_COOKIE";
 my $uri = "http://wargame.inteco.es/level3b.php";
 my $ua = LWP::UserAgent->new();

$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1");
 @header = ('User-Agent' => $useragent, 'Cookie' => $cookie,  'Connection' => 'keep-alive', 'Keep-Alive' => '300', Content =>  [ password => $dato ]);
 my $response = $ua->post($uri, @header);
}

Nivel 3-C

Este era un fichero Flash. Editando el fuente de la web vemos el fichero SWF. Lo descargamos y con una versión de pruebas de Shothink SWF lo abrimos y echamos un ojo al fuente.

Hay un user/pass para despistar pero al final tenemos un hash con nuestra clave. No pa recuerdo ahora mismo pero era algo así como palillos o alguna palabreja similar.

Implementación y explotación de Servicios Web

Índice

1. Introducción

2. Montando una plataforma de pruebas. Requisitos

3. Creando una base de datos para pruebas

4. Creando el conector ODBC

5. Creando un servicio web para pruebas

6. Probando el servicio web en remoto

7. Creando un conector en perl

8. Explotando el servicio web

Seguir leyendo Implementación y explotación de Servicios Web

Fallo de seguridad en Tuenti: SQL Injection que permite obtener datos de usuarios

Son numerosos los fallos que se han ido detectando en esta red social (no más de los que se encuentras en cualquier otra web del estilo). Normalmente son fallos de XSS pero esta vez he encontrado en la web de Tuenti la posibilidad de inyectar código SQL.

Este enorme fallo de seguridad permite extraer datos confidenciales de usuarios (nombre, apellidos, mail, tfno, password en MD5, …) de manera que voy a escribir a los técnicos de Tuenti y a esperar que esté todo solucionado antes de publicarlo en el blog.

… Ya he hablado con Ícaro Moyano, por cierto, una persona muy agradable, y han solucionado el problema … paso a comentarlo …

Seguir leyendo Fallo de seguridad en Tuenti: SQL Injection que permite obtener datos de usuarios