2012/12/16

[Write-up] PHDays CTF (Quals) Bin100

Me revoilà!!

Après tant d'absence non, je ne suis pas mort !
Plutôt pas mal occupé sur Toulouse ou je bosse désormais mais jamais bien loin du monde de la sécu ;-) !

Ainsi, je me suis pas mal remis aux CTF depuis peu avec mes confères d'ou ce petit post de "reprise d'activité" du blog .

Bon, je me suis pas foulé sur ce coup, je le reconnais mais je commence à avoir des idées d'articles qui germent dans ma 'tite tête alors en attendant voici un petit writeup des plus simple mais bon...
Comme souvent ici il est question de R.E.

Le CTF était de type "Jeopardy" : il fallait DL les challenges sur l'adresse quals.phdays.com puis POUTRER !

Je me suis donc dis que les catégories Bin et Pwn étaient pour moi .
Cela dis, j'ai jeter un oeil ailleurs aussi, forcément.. C'était plutôt pas mal avec de l'audit de source  PHP et requêtes SQL (voir en fin d'article) en passant par un puzzle à résoudre ou encore du R.E avancé sous Bochs, bref, du pur bonheur !!

Bon, passons au sujet traité ici: le bin100:
On DL une archive .zip, un petit unzip dessus et on se retrouve avec un binaire "discret" appelé simplement .exe que j'ai rapidement renommé bin1.exe.

En premier lieu je lance la bête afin de le voir à l'oeuvre et de prendre en compte les éventuels outputs renvoyés:


A partir de la j'ai tout naturellement sortie Ida et me suis dis "oups ": à la seule vue du code ASM on pige direct qu'il y a un packer la dessous alors.. PeID !
Ouf, fausse alerte enfin, si , packé mais un simple UPX donc upx -d bin1.exe, on check et ok, unpacked.
A partir de la c'est du classique on lance notre désassembleur préféré HT \o/ :


Ok de la on a notre EP (Entry Point) donc ne fait plus que suivre à partir de l'adresse ou le binaire "jumpe" puis on regarde attentivement le code ASM en réalisant un dump ou encore avec un arbre des appels de fonctions, ce que fait très bien IdaPro:


Bon donc la c'est carrément easy, si vous etes des assidus de mon blog vous devriez savoir ce qu'il reste à faire..non?

Simple pourtant ! On vois clairement les conditions à bypasser afin de tomber sur le "Get_your_flag" (explicite n'est-ce pas) ce que nous allons d'ailleurs faire immédiatement car le but est de valider un flag hein ;-) .
On va donc faire comme tout bon newbie et venir transformer nos JZ en JNZ, chmoder le binaire (+x) et voir si notre intuition est la bonne auquel cas on aura poutrer ce premier challenge en 2 minutes chrono !!

Les modifications apportées ( je ne reviendrai pas sur le comment car tout est expliquer ailleurs sur mon blog), voici ce que l'on obtiens sous HTeditor:


Ou sous Ida avec un beau graphe de fonctions:


So, à présent exécutons notre binaire modifier pour vérifier tout cela..


Oh ben ça alors, un flag, plus qu'a utiliser quelque xor (vu dans les fonctions précédentes) afin d'en générer un md5 pour la validation, phase que je ne détaillerai hélas pas ici par manque de temps et je m'en excuse car c'est bien la le nerf de la guerre :S ...

Ceci dit je me réserve plutot pour les writeups du CTF de la semaine à venir: 29C3   !!

Voila pour ce petit writeup de rappel, incomplet, je le regrette mais il faut l'avouer, il était simple: un UPX -d et 2 \x75 c'est quand même pas violent aprés un petit calcul à faire et hop!
Mais au moins ça m'aura permis de rédiger ce petit article qui, je le reconnais me donne envie de revenir rapidement en réécrire d'autre beaucoup plus technique alors .. A très vite !!

kmkz

Liste des writeups diponibles


RealWorld100 (php/sql)
RealWorld500
Pwn300
Misc100
Misc400(code)
Misc200(Deutch)

3 commentaires:

hook a dit…

that's exactly what i did and i got that message printed out ,"Get your flag Hoppa Key" but i couldn't validate the flag :( , in what format did you submit the flag ? md5 , because i tried that and it didn't work.

Anonyme a dit…

Omg! The task was: Find the flag, which is provided in the MD5 format.

kmkz a dit…

Ho! Sure, you'll must to make some "xor" (not detailled here, that's true) to generate the validation md5 hash:

e8bdedac5afcd9b5cd1fcf9bee9af99a

You can have others info here(Chinese)-> http://www.blue-lotus.net/phday-ctf-2012-quals-bin100/

Or, more detailled about this functions here -> http://blog.botbie.com/2012/12/18/phd-ctf-quals-2012-bin-100-writeup/

But it was quite easy and I don't want to talk about for hours, I prefer to prepare next CTF (29c3), it will more interesting !!

So, sorry for this oversight ...
I'm ashamed .... :'(