Solución al reto stealshop #wgsbd2

Selection_001.png

En este caso este reto consistía en un sitio web. En la página principal teníamos varios links a distintos productos y un poco más abajo otro enlace dónde decía: mostrar un objecto de forma aleatoria o algo parecido. Lo siento no tengo una captura de pantalla y hablo de memoria :p

Cuando hacíamos click sobre uno de los objetos, nos aparecía algo como la imagen que vemos más arriba.

Cada elemento tenía su propio nombre, ID y descripción. Lo primero que me dio por probar fue ver si podía sacar el valor del ID, el cual tiene toda la pinta de ser un hash.

Y efectivamente, OnlineHashCrack.com me decía:

Selection_002.png

Como podemos ver el hash es SHA-1 y corresponde al número 9. Probé con algún otro hash y todos eran números: 3, 5, etc.

Otra cosa que importante a tener en cuenta era la URL:

show_item.php?id=XXXXXX

Dónde las Xs son el hash del producto. Lo primero que hice fue calcular el hash de 0 y poner el hash en el parámetro de la URL. Pantalla en blanco. Igual, el producto con ID 0 no existe. Vamos a probar con el 1. Lo mismo. Vamos a probar con uno de los que nos muestra la web para asegurarnos de probar uno que existe… Pantalla en blanco. Pues parece que la página no le gusta que le cambiemos el parámetro ahí por la cara. Huele a que comprueba el referrer de la petición.

Probamos con wget:

wget --referer=http://wargame.securitybydefault.com/b5de9a5b7b562af19300c70a44b76206/index.php http://wargame.securitybydefault.com/b5de9a5b7b562af19300c70a44b76206/show_item.php?id=0ade7c2cf97f75d009975f4d720d1fa6c19f4897

Ahora si tragó. Pues nada vamos a empezar a descargar. Para ello escribí un pequeño script:

#!/usr/bin/env ruby

require 'digest/sha1'

1111.times { |id|
	hash = Digest::SHA1.hexdigest(id.to_s)
	pp = %x[wget --referer=http://wargame.securitybydefault.com/b5de9a5b7b562af19300c70a44b76206/index.php http://wargame.securitybydefault.com/b5de9a5b7b562af19300c70a44b76206/show_item.php?id=#{hash}]
}

Este script lo que hace es ir desde 1 a 1111 y calcula el hash del índice y hace la petición.

¿Por qué 1111 peticiones? Porque en la imagen de este reto aparecía ese número y cuando uno desespera se agarra a un clavo ardiendo :D

Después de que el script terminó de correr, tenemos otro problema, 1111 ficheros. Por suerte la mayoría estaban vacíos, así que:

find ./ -name "show*" -size 0 -exec rm {} \;

Eso nos deja con 25 ficheros. Como no sabía que buscar me puse a abrir ficheros manualmente hasta que me encontré con esto:

Selection_003.png

Por lo tanto nuestro token es: This_is_th3_flag_of_the_victory

Para los curiosos el ID correspondiente a ese hash es el 22.