Introduction du challenge: A company needed a website, to generate QR Code. They asked for a freelance to do this job
Since the website is up, they've noticed weird behaviour on their server
They need you to audit their code and help them to resolve their problem
Flag is situed in /app/flag.txt Tree Viewer Les sources de ce challenge sont fournies :
. ├── docker-compose.yml ├── Dockerfile ├── package.json ├── src │ └── index.
Introduction du challenge: Here, you can check the content of any directories present on the server.
Find a way to abuse this functionality, and read the content of /home/flag.txt Tree Viewer Les sources de ce challenges ne sont pas fournies mais nous avons accès en /?source au code php du backend:
http://13.37.17.31:51695/?source
<?php $parsed = isset($_POST['input']) ? $_POST['input'] : "/home/"; preg_match_all('/[;|]/m', $parsed, $illegals, PREG_SET_ORDER, 0); if($illegals){ echo "Illegals chars found"; $parsed = "/home/"; } if(isset($_GET['source'])){ highlight_file(__FILE__); } ?
Introduction Alors qu'elle se promenait au Pays des merveilles, Alice tomba sur une chenille étrange. À sa grande surprise, cette dernière se vantait d'avoir construit son propre site web en utilisant Javascript. Bien que le site semblait simple, Alice ne pouvait s'empêcher de se demander s'il était vraiment sécurisé. Les sources de ce challenge sont fournies :
public ├── docker-compose.yml ├── Dockerfile └── src ├── index.js ├── package.json ├── views │└── index.
Introduction des deux challenges: Au cours de ses aventures au Pays des merveilles, Alice a rencontré une curieuse paire de jumeaux : Tweedledee et Tweedledum. Les deux avaient créé un site web simpliste en utilisant Flask, une réalisation qui a suscité l'intérêt d'Alice. Avec son esprit curieux et son penchant pour la technologie, Alice ne pouvait s'empêcher de se demander si elle pouvait pirater leur création et en découvrir les secrets.
Introduction L’échange de clé de Diffie-Hellman est une méthode pour partager un secret entre 2 individus de manière sécurisé, même si leurs transmissions sont sur écoute.
Présentation des courbes elliptiques : Avant de s’attaquer à la partie cryptographique, il est nécessaire de comprendre le fonctionnement global des courbes elliptiques.
Une courbe elliptique est un ensemble de points $(x,y)$ vérifiant une équation du type: $y^2=x^3+ax+b$, autrement dit , on définit une courbe elliptique comme :
Introduction AES est un chiffrement par bloc basé sur des opérations matricielles élémentaires. Avant de s’attaquer à tout ce système, il est important de les avoirs en tête. Voici donc une explication rapide sur le mode de fonctionnement d’AES.
Présentation rapide d’AES On souhaite chiffrer un bloc se 16 bytes, la première étape est de l’exprimer sous la forme de matrice 4*4:
$$ \begin{pmatrix} 1 & 2 & 3 & 4 \newline 5 & 6 & 7 & 8 \newline 9 & 10 & 11 & 12 \newline 13 & 14 & 15 & 16 \newline \end{pmatrix} $$ Cette matrice va subir plusieurs modifications.
Introduction Feal est un algorithme de chiffrement présenté dans la fin des année 80 par Akihiro Shimizu et Shoji Miyaguchi. C’est un chiffrement par bloc qui à concurrencé le DES et qui est aujourd’hui obsolète.
Feal (Fast Data Encipherment Algorithm) est un chiffrement de type réseau de Feistel. Il a connu plusieurs variations que nous allons voir ici.
Par la suite , des illustrations seront issue du blog de Jon King
Introduction Adi Shamir , né le 6 juillet 1952 à Tel Aviv, est un mathématicien et un cryptologue israélien reconnu comme l’un des experts les plus éminents en cryptanalyse. Il a créé un algorithme de cryptographie utilisant le concept de partage de clé secrète.
L’idée principal de son chiffrement est de partagé la clé de déchiffrement d’un algorithme quelconque en plusieurs parties. Seul la réunion de celles-ci conduiront au texte déchiffré.
Introduction : Généralement, dans un contexte de CTF , il est possible de tomber sur un oracle de déchiffrement RSA , on nous donne accès :
à un oracle permettant de déchiffrer des messages sauf le flag chiffré le flag chiffré Voici donc plusieurs méthodes pour trouver le flag en clair :
Méthode 1: La première méthode est de Factoriser le message $c$ . On peut ainsi demander de déchiffrer les facteurs du flag puis re-multiplier les clairs entre eux pour récupérer le message original:
Introduction : Le chiffrement RSA permet l’utilisation d’un système de signature des messages lors de la transmission de ceux-ci.
Ainsi, un message chiffré peut être accompagné de sa signature qui atteste de son intégrité au prêt du serveur.
Voici un message chiffré & signé :
$<s,c>$ Fonctionnement global. Le chiffrement RSA se compose :
un exposant de chiffrement une clé publique une clé privée On va réutiliser les propriétés arithmétiques du chiffrement pour inventer la signature noté $s$ .