Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
ndh2k12_public:crackme:stay_alive [2012/07/01 18:26] TheLizardKing créée |
ndh2k12_public:crackme:stay_alive [2017/04/09 15:33] (Version actuelle) |
||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| Dans ce challenge, on nous fourni une application Windows Phone (qui est un paquet Silverlight). | Dans ce challenge, on nous fourni une application Windows Phone (qui est un paquet Silverlight). | ||
| Un paquet Silverlight est une archive au format ZIP avec l’extension .XAP. | Un paquet Silverlight est une archive au format ZIP avec l’extension .XAP. | ||
| - | Décompressez cette archive devrait vous donnez une multitude de fichier, ainsi qu'un appelé ndh_stay-alive.dll. | + | Décompresser cette archive devrait vous donner une multitude de fichiers, ainsi qu'un appelé ndh_stay-alive.dll. |
| ====First steps==== | ====First steps==== | ||
| - | Ce fichier est une librairie programmé en .NET. Ouvrez le avec un désassembleur .NET, pour pouvoir lire le code. | + | Ce fichier est une bibliothèque programmée en .NET. Ouvrez-le avec un désassembleur .NET, pour pouvoir lire le code. |
| - | À partir du moment ou cette assembly n'est pas protégé, ce challenge va être trivial. | + | À partir du moment ou cet assembly n'est pas protégé, ce challenge va être trivial. |
| J'ai utilisé SAE (Simple Assembly Explorer) pour extraire le code, je l'ai nettoyé et voici ce que je trouve: | J'ai utilisé SAE (Simple Assembly Explorer) pour extraire le code, je l'ai nettoyé et voici ce que je trouve: | ||
| Ligne 148: | Ligne 148: | ||
| }</file> | }</file> | ||
| - | Nous allons le nettoyé un peu plus et supprimé tous le code inutile pour avoir une vue claire du code. | + | Nous allons le nettoyer un peu plus et supprimer tout le code inutile pour avoir une vue claire du code. |
| - | La fonction ndhPasswordLogin_Click est une fonction évenementielle, elle est appelé quand un utilisateur | + | La fonction ndhPasswordLogin_Click est une fonction évènementielle, elle est appelée quand un utilisateur |
| - | appui sur le bouton Login. | + | appuie sur le bouton Login. |
| - | Cette fonction appelle une fonction de cryptage et compare ce résultat avec une chaîne chiffré par cette même fonction (on imagine bien). | + | Cette fonction appelle une fonction de cryptage et compare ce résultat avec une chaîne chiffrée par cette même fonction (on imagine bien). |
| - | Cette chaîne n'est pas donné directement, le programme utilise plusieurs fonctions pour la récupéré. | + | Cette chaîne n'est pas donnée directement, le programme utilise plusieurs fonctions pour la récupérer. |
| Récupérons la... ! | Récupérons la... ! | ||
| Ligne 160: | Ligne 160: | ||
| <file C# source.cs>this.hashA223UU8DzZDZD = "+5jeyeCv5uejnwa2dd5L7LvIjM4nDFyhhLY+Nj5Rh3wgZFL8Mi3hltRicAalWPuLRQMk91oag4dfWfnj7nD3JB13grBCyFMf6pJwP8bfBQ5";</file> | <file C# source.cs>this.hashA223UU8DzZDZD = "+5jeyeCv5uejnwa2dd5L7LvIjM4nDFyhhLY+Nj5Rh3wgZFL8Mi3hltRicAalWPuLRQMk91oag4dfWfnj7nD3JB13grBCyFMf6pJwP8bfBQ5";</file> | ||
| - | Quand la fonction trustedHash() est appelé, le programme retourne cette valeur ainsi que 4 autres. | + | Quand la fonction trustedHash() est appelée, le programme retourne cette valeur ainsi que 4 autres. |
| La variable text contient: | La variable text contient: | ||
| Ligne 182: | Ligne 182: | ||
| <file C# source.cs>/8hd3Z1ds8a1StSQkXxNyjZd2mTQPpTR4zmyf9FzK4Y4XUfzw1hUP3qj+</file> | <file C# source.cs>/8hd3Z1ds8a1StSQkXxNyjZd2mTQPpTR4zmyf9FzK4Y4XUfzw1hUP3qj+</file> | ||
| - | La chaîne correct est ainsi une concaténation de c'est 5 valeurs dans l'ordre suivant: | + | La chaîne correcte est ainsi une concaténation de ces 5 valeurs dans l'ordre suivant: |
| - | <file>hashA223UU8DzZDZD + trustedHashPart3() + trustedHashPart2() + trustedHashPart1() + text</font> | + | <file>hashA223UU8DzZDZD + trustedHashPart3() + trustedHashPart2() + trustedHashPart1() + text</file> |
| La chaîne est donc: | La chaîne est donc: | ||
| Ligne 361: | Ligne 361: | ||
| Result: Failed!</file> | Result: Failed!</file> | ||
| - | La fonction fonctionne à merveille, nous avons plus qu'à décrypté la variable qui contient le bon mot de passe pour avoir le flag ! | + | La fonction fonctionne à merveille, nous n'avons plus qu'à décrypter la variable qui contient le bon mot de passe pour avoir le flag ! |
| <file>hzv-will-never-die</file> | <file>hzv-will-never-die</file> | ||
| - | |||
| - | Xartrick, 2012. | ||