Intro
On nous parle d’un temps, que les moins de vingt ans, ne peuvent pas connaître, sur le web en ce temps-là, nous cherchions sur Eureka et discutions sur Caramail //musique
Bon maintenant que je passe pour un vieux, alors que je n’ai que 5 ans en âge chat, nous allons pouvoir commencer.
La base d’internet c’est le HTML, nous allons donc plonger dans le code source de la page à la recherche de la balise perdue.
Façon #1 : la version automatisée | exploit.py
#coding:utf-8
import requests
import re
#variables applicatives
regex = "FCSC{.*?}"
url = "http://challenges2.france-cybersecurity-challenge.fr:5000/"
s = requests.Session()
#fontion ConnClose, logique de fermeture de la connection
def ConnClose():
print("[*] Closing connection")
s.close()
input()
#Fonction Exploit, payload/code à éxécuter, à modifier selon le problème du CTF
def Exploit():
print("[*] Connection to %s" % url)
r = s.get(url)
print("[*] Doing Black magic")
r = r.content
print("[*] Working hard")
result = re.findall(regex, str(r))
flag = result
print("[*] What does the cat says ?")
if not str(result):
print("[*] Bad Luck my friend")
else:
for f in flag:
print("[*] Lucky you, flag is : %s " % f)
#Fonction ConnOpen, logique d'ouverture du stream HTTP vers le serveur
def ConnOpen():
try:
Exploit()
except:
print("[*] Exploit failed")
finally:
ConnClose()
#Program Main
ConnOpen()
Franchement, quand je code un outil, j’aime bien pouvoir l’utiliser sur plusieurs défis, ça tombe bien, c’est exactement sa fonction : rechercher dans la source de la page un pattern particulier et de le ressortir :
Méthode #2 : La version manuelle | Dora l’exploratrice
Une fois de plus, nous affichons la source de la page, et à mon grand regret, le flag apparaît dès le début.
Le mettre en pied de page aurait ajouté un peu de suspens, mais bon, ce sont les bases.
FCSC{a1cec1710b5a2423ae927a12db174337508f07b470fc0a29bfc73461f131e0c2}