{% extends "base.html" %} {% block content %}

SQL Injection

Bank

Bob is al jaren trouwe klant en gebruikt de site dagelijks om te kijken hoeveel geld er op zijn rekening staat. Achter op zijn poespas pas heeft hij met een viltstift „Niet vergeten: Bob 123456” geschreven. Gebruik de site om te kijken hoeveel geld Bob op zijn rekening heeft staan.

Alice is ook klant van de bank en wij willen ook graag weten hoeveel geld zij op haar rekening heeft staan. We gaan daarom haar rekening hacken met behulp van SQL.

Lees op deze website de verschillende SQL injectie technieken: http://www.sqltutorial.nl/artikelen/sqlinjections/soorten_sql_injection.html

Ga nu aan de slag en hack het account van Alice!

Hint 1: Kijk eerst eens wat er gebeurt als je inlogt met een enkele quote in de gebruikersnaam (').

Hint 2: Met -- (twee streepjes gevolgd door een spatie) kan je commentaar achter een regel zetten in SQL.

Hint 3: Bekijk de broncode achter de site: https://github.com/Avans/Security-Workshop/blob/master/bank/index.php#L51 De code beschouwt een gebruiker als ingelogd als de query een rij uit de gebruikerstabel teruggeeft. Manipuleer de query zodat deze de gegevens van Alice teruggeeft, zonder dat je het wachtwoord hoeft te weten.

Hoeveel geld heeft Alice op haar rekening staan?
5 punten
Wat heb je als gebruikersnaam ingevuld om zonder wachtwoord in te loggen als Alice?
10 punten

Waarschijnlijk heb je SQL commentaar (--) gebruikt in de vorige opdracht. Voer nu een andere SQL injectie uit door alleen het wachtwoord veld te gebruiken. Gebruik niet de SQL commentaar techniek maar verander nu de logica van de query (AND, OR) zodat er niet meer gecontroleerd wordt op het wachtwoord.

Met welk 'wachtwoord' lukt het altijd om in te loggen?
10 punten
Bekijk de PHP broncode en los het probleem op. Type de regels code die je verbeterd hebt in onderstaand tekstveld. (denk terug aan je mysql WEBS2 practicum)
15 punten

Open de "Bank (multi_query)" pagina. Op deze pagina werken ook SQL Injection technieken die gebruik maken van meerdere queries (queries gescheiden door een ; ).

Met welke gebruikersnaam kan je (alleen) Bob miljonair maken? (Het saldo staat in een kolom "balans")
10 punten

Webshop

Inloggen in een ander account is leuk. Maar echte hackers stelen kostbare data uit een website. Dat gaan we nu doen met de webshop van Leaky's.

Je kan de broncode vinden op: https://github.com/Avans/Security-Workshop/blob/master/webshop/product_detail.php#L62

Zoals je ziet hebben ze hier gebruik gemaakt van mysql_real_escape_string(). Je kan dus geen gebruik meer maken van rare quotejes om de query aan te passen.

Maar met behulp van de UNION techniek kunnen we alsnog data stelen uit de website. Lees in de tutorial hoe je deze techniek kan toepassen om data uit andere tabellen te lezen.

In de database is er nog een tabel "gebruikers" waar gebruikersnamen en wachtwoorden in staan. Steel deze informatie uit de database!

Hint: Verander het cijfer in de url van de product_details.php pagina in de letter 'a' zodat je de query kan lezen.

Wat zijn de gebruikersnamen en wachtwoorden van de 4 gebruikers in de database? (de id's van de gebruikers zijn 1,2,3 en 4)
5 punten
Met welke URL heb je het wachtwoord van Marco achterhaald?
10 punten
Bekijk de broncode en verbeter deze zodat je geen SQL injection meer kan gebruiken.
15 punten

Open de pagina "Webshop (replace)". De maker van deze website heeft extra maatregelen genomen en woorden als SELECT en UNION uit de invoer gefilterd.

Hint: SELSELECTECT

Met welke URL kan je nu het wachtwoord van Marco achterhalen?
5 punten

Hacking Lab

Ga aan de slag met hacking-lab.com. Volg de instructies op de site en begin met de A1 Injection opdracht. Deze staat in de OWASP Top Ten event.

Wat is het creditcardnummer van "hacker10"?
5 punten
Beschrijf hoe je de aanval hebt uitgevoerd.
10 punten
{% endblock %}