HAKATEMIA
35Ensikosketus haavoittuvuuksiin

Murtaudu verkkosivulle

Helppo15MIN
HARJOITUKSET

Harjoittele oppimaasi

LAB · TASK #56a2118e-c2ff-4f0c-9fd8-1b41dac55b001

Tehtävä

VIDEOYOUTUBE

Jos sinulla on hankaluuksia päästä alkuun tai jäät pahasti jumiin johonkin kohtaan, niin videolta pitäisi saada apuja! - Suosittelemme kuitenkin yrittämään ensin itse, ennen kuin katsot ratkaisun videolta.

Asiakas Security Oy on palkannut sinut testaamaan heidän sisäisen hallintajärjestelmän turvallisuutta. Tehtäväsi on etsiä sovelluksesta heikkous ja murtautua järjestelmään sisään.

Asiakas suostui myös lähettämään sinulle osan järjestelmän lähdekoodeista, mutta ei kaikkea.

PY
1#!/usr/bin/python3
2
3# Kirjasto tietokannan hallintaan
4from moduulit import tietokanta
5
6# Flask verkkosivu kirjastot
7from flask import Flask, render_template, redirect, request
8from flask import make_response
9
10app = Flask(__name__)
11haku = tietokanta.Haku()
12
13@app.route("/")
14def juuri():
15  # Haetaan tunniste evaste
16  tunniste = request.cookies.get('tunniste')
17  # Jos tunniste on oikea, kayttaja on kirjautunut
18  if tunniste == "ADMIN1":
19    # Haetaan hallintanakyman tiedot 
20    tiedot = haku.haeTiedot()
21    return render_template("hallinta.html", tiedot=tiedot)
22  # Muuten ohjataan kirjautumaan
23  else:
24    return redirect("/login")
25
26@app.route("/login", methods=["GET","POST"])
27def kirjaudu():
28  if request.method == "GET":
29    failed = request.args.get("vaarin")
30    return render_template("kirjaudu.html", failed=failed)
31  elif request.method == "POST":
32    # Varmistetaan, etta tunnukset ovat oikein
33    kayttaja = request.form.get("kayttaja")
34    salasana = request.form.get("salasana")
35    oikein = haku.varmistaTunnus(kayttaja, salasana)
36    if oikein:
37      # asetetaan istuntotunniste
38      vastaus = make_response("blank.html")
39      vastaus.set_cookie("tunniste", "ADMIN1")
40      return vastaus
41    else:
42      return redirect("/login?vaarin=kylla")
43
44
45if __name__ == '__main__':
46  app.run(debug=False, host='0.0.0.0')

Jos tehtävä tuntuu vaikealta, eikä näytä ratkeavan millään, niin suosittelemme tutustumaan myös Python-ohjelmointi sekä Web-kehityksen perusteet - kurssiin.

Vihje

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

Hakatemia Pro

Hakkeroinnin oppiminen alkaa tästä

Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.