Terminaron las quals para el CTF de la Defcon19, este año si nos apalearon.
terminamos con 400 puntos: 100 en binarios, 100 en una trivia retro y 200 de otro reto que resolvio nando aunque creo que ni el supo como (igual que me paso el año pasado con un reto de crypto al que le pase un string nulo)... en todo caso... estuvo duro... mucho mas que el año pasado...
pues bien, conseguimos los primeros 100 puntos del equipo con el binary100
Lo primero fue identificar el binario usando file:
rmolina@maybe-failed:~/Downloads$ file b100_6817e51fa3b60f176b56b100_6817e51fa3b60f176b56: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
y desde ahi ya ejecutar
rmolina@maybe-failed:~/Downloads$ chmod +x b100_6817e51fa3b60f176b56rmolina@maybe-failed:~/Downloads$ ./b100_6817e51fa3b60f176b56./b100_6817e51fa3b60f176b56 [1-11|all]
veo que recibe un parametro que puede ser un numero o 'all'
rmolina@maybe-failed:~/Downloads$ ./b100_6817e51fa3b60f176b56 1(aqui borre muchas lineas, pero bueno la salida formaba unas caritas, emoticones, pero las ultimas lineas ya nos ubican)5KQdq2HN cr7f Y65 ComKCtmynin13b/ 1MOB wl6 +Z3gPOvgGsuM6KtaQ pj2D yWjO A1a5Lm5rmyLQluWb5 3a8D XffO C/ofUzGUnrdzH2bx7N+ 5u6C SQXA awT6CMHez26TtDI4f3B nwaX y4y gBZBCyfxDdrKMZAkT6XPo 7QDs D8zj iqgHh9dtOI/2FZV4o9ahU 9hsB nIYH WxUq7Iovfaat9/3qyCMID6/ lUEMw UMMAAA==@ @@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@ @@ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@ @ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @ @ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @ @ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
todas esas '@' tienen que ser un relleno y justo antes de ellas, un '==' nos hace pensar en un texto en base64
pero primero hay que quitar las arrobas, los espacios, y los saltos de linea:
rmolina@maybe-failed:~/Downloads$ ./b100_6817e51fa3b60f176b56 1 | tr -d '@ \n' | base64 -d > b100.1rmolina@maybe-failed:~/Downloads$ file b100.1b100.1: gzip compressed data, was "bin2-a", from Unix, last modified: Fri Apr 1 03:28:09 2011
y si usamos el parametro 2, obtenemos:
rmolina@maybe-failed:~/Downloads$ ./b100_6817e51fa3b60f176b56 2 | tr -d '@ \n' | base64 -d > b100.2rmolina@maybe-failed:~/Downloads$ file b100.1b100.2: gzip compressed data, was "bin2-b", from Unix, last modified: Fri Apr 1 03:28:09 2011
bin2-a y bin2-b son partes de un archivo gzip
me imagino que si se savan las 11 partes y se concatenan con cat, se obtiene el archivo gzip completo
pero preferi intentar con el parametro all
rmolina@maybe-failed:~/Downloads$ ./b100_6817e51fa3b60f176b56 all | tr -d '@ \n' | base64 -d > b100.all.gzrmolina@maybe-failed:~/Downloads$ gunzip b100.all.gzrmolina@maybe-failed:~/Downloads$ file b100.allb100.all: 7-zip archive data, version 0.3rmolina@maybe-failed:~/Downloads$ mv b100.all b100.all.7zrmolina@maybe-failed:~/Downloads$ 7z e b100.all.7z7-Zip 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30p7zip Version 9.04 (locale=es_CO.utf8,Utf16=on,HugeFiles=on,2 CPUs)Processing archive: b100-all.7zExtracting bin2Everything is OkSize: 980647Compressed: 514107rmolina@maybe-failed:~/Downloads$ file bin2bin2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
y ya tenemos un nuevo binario
para resumir, otra carita es ascii, pero esta es diferente...
en todo caso, tratamiento similar:
rmolina@maybe-failed:~/Downloads$ ./bin2 | tr -d '@ \n' | base64 -dS0 S0RRY 41NT NUTH1N BUT 4 P34NUT(ese texto sale muchas veces)
intento esa clave
no es
nos esta diciendo que vamos perdidos
despues de un rato se me ocurre que si aparecio bin2, y suponiendo que el incial que nos dan es bin1, puede haber otros escondidos...
intento pasarle parametros pero ninguno funciona.
finalmente, reviso con ltrace:
rmolina@maybe-failed:~/Downloads$ ltrace ./bin2 all__libc_start_main(0x8048460, 2, 0xbff06284, 0x80484a0, 0x8048500strcmp("all", "h3rr0m3y3n4m31zbr0br0gan") = -1fprintf(0xb78784e0, "%s\n", " UzAgUzBSUlkgNDFOVCBOVVRIMU4gQlV"... UzAgUzBSUlkgNDFOVCBOVVRIMU4gQlVUIDQgUDM0TlVUIFMwIFMwUlJZIDQxTlQgTlVUSDFOIEJVVCA0IFAzNE5VVCBTMCBTMFJSWSA0MU5UIE5VVEgxTiBCVVQgNCBQMzROVVQgUzAgUzBSUlkgNDFOVCBOVVRIMU4gQlVUIDQgUDM0TlVUIFMwIFMwUlJZIDQxTlQgTlVUSDFOIEJVVCA0IFAzNE5VVCBTMCBTMFJSWSA0MU5UIE5VVEgxTiBCVVQgNCBQMzROVVQgUzAgUzBSUlkgNDFOVCBOVVRIMU4gQlVUIDQgUDM0TlVUIFMwIFMwUlJZIDQxTlQgTlVUSDFOIEJVVCA0IFAzNE5VVCBTMCBTMFJSWSA0MU5UIE5VVEgxTiBCVVQgNCBQ(y el resto del string que genera la carita)
pero con ese strcmp ya encontramos "h3rr0m3y3n4m31zbr0br0gan"
al pasar ese parametro sale un texto nuevo, una carita nueva, muchas pero muchas de esta cara en ascii...
bueno esta carita la reconozco, pero es irrelevante...
al final otra vez arrobas y repetimos el tratamiento
desde ahi, es cosa de identificar la salida, renombrar (algunos comandos requieren la extension correcta) y usar el descompresor adecuado...
resuta que usaron muchos descompresores diferentes... todos en cadena...
rmolina@maybe-failed:~/Downloads$ ./bin2 h3rr0m3y3n4m31zbr0br0gan | tr -d '@ \n' | base64 -d > nuevobinrmolina@maybe-failed:~/Downloads$ file nuevobinnuevobin: gzip compressed data, was "bin3", from Unix, last modified: Fri Apr 1 01:35:15 2011rmolina@maybe-failed:~/Downloads$ mv nuevobin bin3.gzrmolina@maybe-failed:~/Downloads$ gunzip bin3.gzrmolina@maybe-failed:~/Downloads$ file bin3bin3: lzop compressed data - version 1.030, LZO1X-999, os: Unixrmolina@maybe-failed:~/Downloads$ mv bin3 bin3.lzormolina@maybe-failed:~/Downloads$ lzop -d bin3.lzormolina@maybe-failed:~/Downloads$ file bin3bin3: compress'd data 16 bitsrmolina@maybe-failed:~/Downloads$ mv bin3 bin3.Zrmolina@maybe-failed:~/Downloads$ uncompress bin3.Zrmolina@maybe-failed:~/Downloads$ file bin3bin3: gzip compressed data, was "bin3", from Unix, last modified: Thu Mar 31 09:10:38 2011rmolina@maybe-failed:~/Downloads$ mv bin3 bin3.gzrmolina@maybe-failed:~/Downloads$ gunzip bin3.gzrmolina@maybe-failed:~/Downloads$ file bin3bin3: ARC archive data, uncompressedrmolina@maybe-failed:~/Downloads$ mv bin3 bin3.arcrmolina@maybe-failed:~/Downloads$ arc -e bin3.arcExtracting file: bin3rmolina@maybe-failed:~/Downloads$ file bin3bin3: XZ compressed datarmolina@maybe-failed:~/Downloads$ mv bin3 bin3.xzrmolina@maybe-failed:~/Downloads$ xz -d bin3.xzrmolina@maybe-failed:~/Downloads$ file bin3bin3: rzip compressed data - version 2.1 (276265 bytes)rmolina@maybe-failed:~/Downloads$ mv bin3 bin3.rzrmolina@maybe-failed:~/Downloads$ rzip -d bin3.rzrmolina@maybe-failed:~/Downloads$ file bin3bin3: gzip compressed data, from Unix, last modified: Fri Apr 1 01:10:06 2011rmolina@maybe-failed:~/Downloads$ mv bin3 bin3.gzrmolina@maybe-failed:~/Downloads$ gunzip bin3.gzrmolina@maybe-failed:~/Downloads$ file bin3bin3: POSIX tar archive (GNU)rmolina@maybe-failed:~/Downloads$ mv bin3 bin3.tarrmolina@maybe-failed:~/Downloads$ tar x bin3.tarrmolina@maybe-failed:~/Downloads$ file bin3bin3: lzop compressed data - version 1.030, LZO1X-999, os: Unixrmolina@maybe-failed:~/Downloads$ mv bin3 bin3.lzrmolina@maybe-failed:~/Downloads$ lzop -d bin3.lzormolina@maybe-failed:~/Downloads$ file bin3bin3: bzip2 compressed data, block size = 900krmolina@maybe-failed:~/Downloads$ mv bin3 bin3.bz2rmolina@maybe-failed:~/Downloads$ bunzip2 bin3.bz2rmolina@maybe-failed:~/Downloads$ file bin3bin3: 7-zip archive data, version 0.3rmolina@maybe-failed:~/Downloads$ mv bin3 bin3.7zrmolina@maybe-failed:~/Downloads$ 7z e bin3.7z7-Zip 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30p7zip Version 9.04 (locale=es_CO.utf8,Utf16=on,HugeFiles=on,2 CPUs)Processing archive: bin3.7zExtracting bin3Everything is OkSize: 272781Compressed: 274332rmolina@maybe-failed:~/Downloads$ file bin3bin3: ARJ archive data, v11, slash-switched, original name: , os: Unixrmolina@maybe-failed:~/Downloads$ mv bin3 bin3.arjrmolina@maybe-failed:~/Downloads$ arj e bin3.arjARJ32 v 3.10, Copyright (c) 1998-2004, ARJ Software Russia. [08 Mar 2011]Processing archive: bin3.arjArchive created: 2011-04-01 01:01:36, modified: 2011-04-01 01:01:36Extracting bin3-a OKExtracting bin3-b OKExtracting bin3-c OK3 file(s)rmolina@maybe-failed:~/Downloads$ cat bin3-* > bin3rmolina@maybe-failed:~/Downloads$ file bin3bin3: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, stripped
finalmente! otro binario!
(por cierto, en el log faltaron algunas paradas para instalar via apt-get o para revisar el manual de los compresores que nadie conoce...)
lo ejcuto y:
rmolina@maybe-failed:~/Downloads$ chmod +x bin3rmolina@maybe-failed:~/Downloads$ ./bin3-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=-hey bro, you're cool bro. don't ever change bro! you're such a bro, bro!-=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-
si!!!
la bandera!
la ensayamos... y no...
no es!
no lo puedo creer...
vuelvo a ejecutar...
rmolina@maybe-failed:~/Downloads$ ./bin3-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=-why be professional when you can be brofessional?-=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-
que?
rmolina@maybe-failed:~/Downloads$ ./bin3-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=-!y3wt4w7k1n2m3? 3y3s3dy3wt4w7k1n2m3?-=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-rmolina@maybe-failed:~/Downloads$ ./bin3-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=-2r98hdij23r98hdsfkjb23r9hdfkj39-=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-rmolina@maybe-failed:~/Downloads$ ./bin3-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=-canthisbethekeybecauseitissuchalongstringandddteklikeslongstrings?-=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-
joder... que despiste...
banderas falsas...
salen al azar...
ahi perdi un buen rato...
me salieron mas de 30 diferentes
pero finalmente decidi listar las cadenas con strings:
rmolina@maybe-failed:~/Downloads$ strings bin3PTRhP<[^_]<8#}(y la lista es larguisima)[^_][^_](pero despues de muchas cadenas aparecen las soluciones falsas)Th1s1zt3hK3yk3yk33H33H33H33.N0t!t00rongD1DNTg1vecanthisbethekeybecauseitissuchalongstringandddteklikeslongstrings?l33tsp33k1z0ut.RealTalkIsIn.h1tth3r04dj4ck3ndd0nty3wc0m3b4ckn0m0ren0m0R3n0M0R3N0M0R3!k3ysk3yst3hmm4g1c4lfr3wtthm0r3y3we4tth3mt3hm0r3y3wr00t5tunt1n1z4h4b1tput171nth3a1r! is i upside down!i!i!A complete statement can also be the key to victory.This is the key.(lol, esa fue la mejor).key the is ThisCan y3w feel it coming in the air tonight?Random thoughts give way to random problems give way to random solutionsLorem Ipsum is a bitch.!y3wt4w7k1n2m3? 3y3s3dy3wt4w7k1n2m3?asdfhasdkfjhasfkjhasfjasdkfjhasdfkjhasfkh2r98hdij23r98hdsfkjb23r9hdfkj398377e19ab2c48f5f70021d6ed92937cc520c3ad1e9b1b3124eedf6e88a40b0f240b19b8f7cf0564cb453a9186431ee9553f7f93584ee6f2004d8dfc1a864012edf6f92a7802d60b2you are what you don't rootWhy don't you make like a tree and.. get outta here?It's already mutated into human form, shoot it!if it makes a difference, they make a purse that looks like a vaginait's better to live one day as a bro than a thousand years as a douchebagwhy be professional when you can be brofessional?hey bro, you're cool bro. don't ever change bro! you're such a bro, bro!a list is only as strong as its weakest linkAs Lord Chesterfield said of the generals of his day, 'I only hope that when the enemy reads the list of their names, he tremelbes as I do.'th3r3 wuz 4 f4m1l33 uv 4r15t0cr4tz1f y3w c4n't 41m j0ur p1$$ 1n d4 t01l3t l1k3 4n 4dult, s1t d0wn & p1$$ l1k3 4 b1zn44zzzzzzzzzt1ch(todas esas me salian al azar)TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvc mUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkI GV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvb W1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpd CBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsY SBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZ GVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZ CBlc3QgbGFib3J1bS4K(esta anterior es un bloque en base64 que te da esperanzas.... pero no... es solo un lorem ipsum...)-=-=-=-=-=-=-=-=- Wh4t W1ll B3 R3v34l3d? -=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=- Wh4t W1ll Be R3v34l3d? -=-=-=-=-=-=-=-=-(se acabaron?)FATAL: kernel too oldFATAL: cannot determine kernel version/dev/full/dev/nullset_thread_area failed when setting up thread-local storageunexpected reloc type in static binaryLIBC_FATAL_STDERR_(y asi nos seguimos)of Verneed recordRTLD_NEXT used in code not dynamically loadedstack smashing detected*** %s ***: %s terminatedzPLRWhere we're going we don't need... roads.CAk[S
la vieron?
claro... asi ya es facil....
pero solo por darles el dato:
rmolina@maybe-failed:~/Downloads$ strings bin3 | wc -l1706
1706 strings para inspeccionar...
creanme, no fue facil verla, pero ahi estaba, en un punto facil de encontrar...
porque cuando al final la vi, de una vez pense: "esta nunca me salio, que hace por aca? sera?"
y claro
Where we're going we don't need... roads.
FIN :)
bueno... un BONUS:
logre hacer otros 100 puntos para el equipo resolviendo un problema retro:
____ ___ ______!
si, solo eso decia!
no le veia pinta de nada...
hasta que hablando con rafarevert, me dijo: "eso debe ser un ahorcado"
algo como "fuck the defcon"
y claro ahi si la vi de una:
hack the planet
ya no recuerdo si la respuesta incluia el bang (!) al final o no
uhmm... eso si es retro de verdad :)
Comentarios
Publicar un comentario