2

WriteUp Binary 100 – CTF 19 Quals DefCon (Step by Step)

<– Entrada incluida por DefCon.org en su colección oficial de Resolucionarios para este CTF =) –>

Nos proveen del archivo b100_6817e51fa3b60f176b56 primeramente lo identificamos y vemos que es un ELF 32-bit (osea tenemos un ejecutable de linux) Al ejecutarlo vemos que nos devuelve algo extraño ( ./b100_6817e51fa3b60f176b56 [1-11|all] )

Obviamente como todos se dieron cuenta el programa nos esta sugiriendo que le pasemos argumentos [1-11] del 1 al 11. Al pasarle un argumento nos imprimia unas caras en arte ascii
Dos cosas a notar aqui son: 1) Los caracteres que se usan aqui son los que curiosamente comprende BASE64 (excepto los “@” y ” ” que eran los caracteres basura que pusieron en el reto) y  2)Para cada argumento cambian


Asi que ya sabemos que hacer no? Hay que obtener esas cadenas de Base64 de los 11 argumentos y decodificarlos. Asi que yo lo hice de esta manera:

./b100_6817e51fa3b60f176b56 for((i=1;i<=11;i++));do !!  $i | sed ‘s/@//g;s/ //g’ > $i.hex; done

Primeramente ejecuto el programa, luego recursivamente hago 11 veces la ejecucion del ultimo comando y de una vez elimino los caracteres “@” y “\x20” (espacios) Y como veremos tenemos de una, los 11 archivos y vean que si son diferentes 😉
Pero se me paso eliminar los saltos de linea, asi que los eliminare con “tr” y de una vez decodifico  y doy salida a los archivos nuevos y vemos que son 🙂

for i in $(ls *.hex);do cat $i | tr -d “\n” | base64 -d > $i.b64 ;done file *.b64


Vemos que son 11 .gz con un bin2-[a-k] primero renombramos todo a extension .gz y despues descomprimimos todo y vemos que son 😉

for ((i=1;i<=11;i++));do mv $i.hex.b64 $i.gz;done ls gunzip *.gz ls file {1,2,3,4,5,6,7,8,9,10,11}


Bonito!!! Tenemos un 7zip y 10 archivos de pura “data”, yo al intentar descomprimir el 7zip me dio error. Entonces recorde que cuando vi los gzip decia algo como bin2[a-k] Asi que era claro no?? Habia que juntarlos para formar el 7zip y descomprimir =) y tendriamos un binario2 de seguro…

cat 1 2 3 4 5 6 7 8 9 10 11 > bin2.7z 7z e bin2.7z file bin2


PERFECTO!!! ya tenemos bin2….y Adivinen que?? APENAS COMIENZA LA PESADILLA Si ejecutabamos ./bin2 nos da nada mas arte ascii con base64, asi que limpiabamos y todo:

./bin2 | sed ‘s/ //g;s/@//g’|tr -d “\n”|base64 -d

Solo nos lleva a un callejon sin salida que dice “S0 S0RRY 41NT NUTH1N BUT 4 P34NUT” multiples veces   En esta parte entra mi querido parce @Phicardo que me ayudo, aconsejo, guio y enseño pacientemente a iniciarme al “debugging” (recuerden que es la primera vez que hago esto :/ ) Asi que despues de que me explicara, y me quedara pensando mucho, esto fue lo que hice.. Hice uso de “objdump -s” y encontre una cadena curiosa “h3rr0m3y3n4m31zbr0br0gan
Y como me enseño Phicar, estuve viendo el dump en asm y despues de mucho tiempo y explicaciones vi que esa cadena se debia pasar como argumento por los cmp que habian y que comparaban con el argumento 2, y veia comparaban una cadena (strcmp) y un condicional (jne) si pasaba algo imprimia “3 Face”
Despues de esto se me ocurrio que la cadena h3rr0m3y3n4m31zbr0br0gan estaba bien involucrada…Asi que le pase a bin2 el argumento h3rr0m3y3n4m31zbr0br0gan. Pero nada, recuerdan la comparacion? Contra que cadena va a comparar…Entonces la solucion fue renombrar bin2 a h3rr0m3y3n4m31zbr0br0gan y pasarle de argumento h3rr0m3y3n4m31zbr0br0gan y VOILA!!! Ya salia algo diferente…MAS base64 en arte ascii…

mv bin2 h3rr0m3y3n4m31zbr0br0gan ./h3rr0m3y3n4m31zbr0br0gan h3rr0m3y3n4m31zbr0br0gan


Limpiamos como anteriormente lo hemos hecho y damos salida para obtener “file” y vemos que es.

./h3rr0m3y3n4m31zbr0br0gan h3rr0m3y3n4m31zbr0br0gan | sed ‘s/@//g; s/ //g’|tr -d “\n”|base64 -d > file file file


<—A partir de esta parte todo va en texto porque es Mucho comando como para ir ilustrando—>

mv file file.gz gunzip file.gz file file >lzop compressed data – version 1.030, LZO1X-999, os: Unix sudo aptitude install lzop lzop -x file >bin3 file bin3 >bin3: compressd data 16 bits mv bin3 bin3.z uncompress bin3.z file bin3 >gzip compressed data mv bin3 bin3.gz gunzip bin3.gz file bin3 >ARC archive data sudo aptitude install arc mv bin3 bin3.arc arc x bin3.arc file bin3 >xz compressed data mv bin3 bin3.xz xz -d bin3.xz file bin3 >rzip compressed data mv bin3 bin3.rz rzip -d bin3.rz file bin3 >gzip compressed data mv bin3 bin3.gz gunzip bin3.gz file bin3 >POSIX tar archive (GNU) tar -xf bin3 file bin3 >lzop compressed data mv bin3 bin3.lzop lzop -x bin3.lzop file bin3 >bzip2 compressed data mv bin3 bin3.bz bunzip2 bin3.bz file bin3 >7-zip archive data mv bin3 bin3.7z 7z e bin3.7z file bin3 >ARJ archive data sudo aptitude install arj mv bin3 bin3.arj arj x bin3.arj >Extracting bin3-a OK >Extracting bin3-b OK >Extracting bin3-c OK file bin3-* >bin3-a: ELF 32-bit >bin3-b: data >bin3-b: data cat bin3-a bin3-b bin3-c > bin3 chmod +x bin3

Ejemplo de esta ODISEA:
Despues de esto, YA TENEMOS bin3…Lo ejecutamos  y….¿TENEMOS LA CLAVE? Nooo, parece que si lo volvemos a ejecutar vemos que tiene un random en strings :'(
Entonces me decido a sacar todas esas cadenas…y por alguna razon me decido hacerlo con “objdump” (la razon esque phicar apenas un dia anterior me enseño este programa, y lo use en vez de hacerle primero lo que yo haria….strings)

objdump -s bin3 > out.txt

Todas esas cadenas las pueden ver aqui en pastebin Ninguna de Estas era la clave y aqui me quede atorado y no pude validar el reto…Sin darme cuenta que ya lo tenia todo…Me faltaba nada mas hacer un string y ver al final. Y ahi nos salia la clave.
FLAG: Where we’re going we don’t need… roads.

hecky

2 Comments

  1. Una alegría leerte de nuevo. Gracias por el post .Solo mencionarte q yo no necesito cambiar el nombre de bin2 a h3rr0m3y3n4m31zbr0br0gan (quizás se deba a que descargué el archivo del enlace original ya q el tuyo me daba error al intentar abrirlo).
    ¿No existe otra forma de sacar la contraseña del último archivo bin3 que no sea probar al azar?. He examinado el archivo pero no se lo suficiente de ensamblador para averiguarlo.
    Gracias de nuevo y esperando más.

Leave a Reply

Your email address will not be published. Required fields are marked *