Solución al reto stealshop #wgsbd2

  • July 18, 2011
  • tuxotron
  • 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.

Solución al reto keyconsole #wgsbd2

  • July 18, 2011
  • tuxotron
  • random_number.png

    Este fue el primero que resolví creo. En este caso nos encontramos con un binario que al ejecutarlo nos dice:

    ./tmp_key 
    [-] Checking if your environment is compatible, please wait ...
    [-] Your software isn't original, please buy an original copy.

    A ver que nos dice strings:

    strings tmp_key 
    ...
    /tmp/%i_privatekey_%i
    [-] Checking if your environment is compatible, please wait ...
    /dev/random
    %i%i%i%i%i
    ...

    Parece que busca un fichero en /tmp/X_private_X, donde las Xs son variables y un poco más abajo vemos el uso de /dev/random.

    A ver que nos dice strace:

    touch /tmp/0_privatekey_0
    strace ./tmp_key 
    ...
    open("/tmp/3_privatekey_3", O_RDONLY)   = -1 ENOENT (No such file or directory)
    ...

    Ahora intenta abrir /tmp/3_privatekey_3. Los números van cambiando de forma aleatoria y de acuerdo con la imagen, apuesto a que los números varían de 0 a 4.

    Para solucionar este reto te puedes crear todas las combinaciones posibles del fichero (25) o yo en mi caso me creé varios ficheros y ejecuté varias veces el binario hasta que el fichero buscado fuera uno de los que había creado.

    ./tmp_key 
    [-] Checking if your environment is compatible, please wait ...
    [-] System compatible:
        Your*environment_is-fully:compatible_you*can=play.NOW

    Ya tenemos nuestro token: Yourenvironment_is-fully:compatible_youcan=play.NOW

El organigrama de Apple