http://teamwhoamiexploiting.esy.es/1.PNG

En este reto nos encontramos con un texto que nos indica que tenemos que usar una variable llamada flag.

Como es bien sabido esto indica que utiliza el método GET para trabajar con las variables por lo que las veremos viajar en la cabecera la URL.

Vamos a probar con el siguiente payload http://teamwhoamiexploiting.esy.es?flag=1 obteniendo este mensaje:

DEBES DE USAR UN PAYLOAD MÁS GRANDE

2.PNG

Bien vamos a probar con diferentes payloads, una buena forma de generar estos caracteres es utilizar la consola python con la siguiente sintaxis print ‘a’*100 (100 es el número de caracteres a imprimir).

3

tras varias pruebas errones con el mensaje DEBES DE USAR UN PAYLOAD MÁS GRANDE al usar un payload con 1700 caracteres se recive este mensaje:

DEBES DE USAR UN PAYLOAD MÁS PEQUEÑO

4

En este momento sabemos que el payload está entre 1600 y 1700, lo más lógico es automatizar el proceso de fuzzing a la variable flag pero para aclarar la técnica el compañero Elix me explico como realizar un fuzzer a este tipo de validaciones, este es el script:


import sys, requests
print "xxxxxxxxxxx"
for algo in xrange(1600, 1700):
dato="X"*algo
paquete={'flag': dato}
url=requests.get("http://teamwhoamiexploiting.esy.es/index.php", params=paquete
target = url.headers['Content-Length']

print "Cantidad Enviada: %s Content-Lengh: %s" % (len(dato), target)

5.PNG

Ya solo falta lanzar el script python, python fuzzer.py y el script hará la mágia:

6

Si nos fijamos en

Cantidad Enviada: 1645 Content-Length: 1422

está el punto de ruptura.

Vamos a lanzar el payload con 1645 caracteres, para ello en la consola de python:      print ‘a’*1645 y se obtiene este mensaje:

7.PNG

EL FALLO DEL CÓDIGO ES ESTE:FLAG

Como se aprecia está validando dos factores:

  • 1º Peso en binario del payload y conqueros que tiene que ser 0.
  • 2º El tamaño del payload.

Esto es fácilmente bypaseable mediante la inyección de un valor nulo, y se consigue medinate un array quedando así la el payload : ?payload[]=Hacking_Team

Se procede a la inyacción y bravo!!, tenemos la flag!!: FLAG_{C0NT3NT_L3NGTH_H34D3R5}

8.PNG

Ademas se obtiene la insignia del reto:

insignia

Este reto está programado al 100*100 por mi y está basado en uno que Elix encontró y decidí reversear. El fuzzer desarrollado por el socio Elix.

Esto es todo y espero que os guste obtener la flag como a nosotros desarrollar el reto!.

 

Anuncios