/ forensic

breizhctf2k16 - near_field_challenge

Problem : Retrieve the flag

Les équipes ont reçu une carte NFC, Mifare classic 1k, qui ne protège pas la réécriture. Une borne avec un lecteur NFC permettait de valider le challenge.
En connectant le lecteur sur notre machine et grace à la commande suivante on extrait un dump de la carte :

mfoc -O output.mfd

On obtient alors

On remarque alors le guest:guest qui fait penser à une authentification par user:passwd
En testant alors admin:admin ou guest:admin le token généré sur l'écran est le même. On peut alors penser à une base de donnée car si l'user est inconnu une erreur apparait sur l'écran.
Le résultat généré est alors :

Verification Failed
Token : '!#/)zW\\xa5\\xa7C\\x89J\\x0eJ\\x80\\x1f\\xc3'

Grâce à notre ami Google on se rend compte que le token est généré par un md5 digest

import hashlib
hash = hashlib.md5("admin")
hash.digest()

En recherchant une injection sql avec hash md5 digest on trouve le lien suivant :
http://dc406.com/home/393-sql-injection-with-raw-md5-hashes.html
On trouve alors que en mettant en passwd le content suivant on retrouve un raw qui donne une sqli

content : 129581926211651571912466741651878684928
raw : ?T0D??o#??'or'8.N=?

Il faut alors écrire ça sur la carte sur les bits vides. Le flag apparait alors une fois validation sur un lecteur nfc ou meme sur le fichier.

BZHCTF{NEW_TECH_SAME_VULNZ}