Un utilisateur suspicieux 1/2 (Divers) - 404CTF 2022

Un utilisateur suspicieux 1/2 (Divers) - 404CTF 2022

Fichiers du challenge Principe:
Exploiter une injection SQLite dans un bot Discord

Le challenge

Le challenge nous demande de faire cracher un flag à un bot (les commandes utilisées sont ici , mais je n'ai pas les sources du bot)

Le bot

Envoyons un MP au bot sur le serveur (et pas à mhackthemhacktic4s!)
Le bot nous donne alors des commandes
La commande "chercher" semble être la seule ayant réellement un effet utile
On peut chercher "tout" (% étant souvent un wildcard de LIKE, * marche aussi parfois), mais à part un premier RickRoll, on ne trouve rien

Injection de commande?

J'ai alors opté pour une injection de commande, potentiellement en SQLite, mais pas grand chose n'en ressort

Pourquoi? Parce que les bots Discord sont souvent auto-portants, et que SQLite permet de stocker la DB (avec le flag) sur la même instance que le code du bot. Et souvent, les bots passent les commandes utilisateurs via la CLI à leur backend (autoporté)
Donc, ça se tentait

SQLite ?

Je teste alors une injection SQL(ite) simple: ça passe, le "1" du UNION apparait en fin de liste
Il faut donc maintenant trouver dans quelle table est stockée le flag
Avant de creuser à l'aveugle, mieux vaut savoir quel SGDB est utilisé… et en fait, il s'agit de MariaDB! (= MySQL, en gros)

Exploiter l'injection SQL

On cherche donc la Database où peut se trouver le flag
Puis la table
Puis la colonne
Et on va SELECT cette valeur pour avoir le flag:
404CTF{D1sc0rd_&_injection_SQL}
Un calembour gratuit, pour finir ce writeup

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil