SQL-Injektio

(MySQL) WHERE-käskyjen muuttaminen auktorisoinnin ohittamiseksi

Helppo
10 min

Luottokorttinumeroita!

SQL:ää käytetään käyttäjien tunnistamisen lisäksi moneen muuhunkin asiaan, joista yksi on pääsynhallinta.

Jos vaikka ollaan tunnistettu että käyttäjä on Masa, ja Masa menee verkkopankissa sivulle "Luottokorttisi", miten sivu osaa näyttää juuri Masan luottokortit, eikä vaikkapa naapurin Veeran, jolla on myös tili samassa pankissa?

Yleensä vastaus on, että tietokannassa olevat luottokortit on yhdistetty tiettyyn käyttäjään jonkinlaisen id-kentän avulla, ja sovellus hakee sitten koodissaan sivustolla näytettäväksi vain kortit joiden tunniste (user_id, tms) vastaa kirjautuneen käyttäjän tunnistetta.

Voit kokeilla tätä selaimessa. Tässä on kysely joka palauttaa ihan kaikki luottokortit:

SQL Playground

Ja tässä on kysely joka palauttaa vain käyttäjän numero 1 luottokortit.

SQL Playground

Mutta mitä jos hyökkäjä pääseekin injektoimaan SQL:ää WHERE-lausekkeen perään?

SQL Playground

Lisäämällä WHERE-lausekkeen perään ehdon joka palauttaa myös jokaisen rivin jonka kohdalla 1 on 1, palautuukin tietokannasta jokainen rivi.

Tämän moduulin labrassa on juuri tällainen tilanne. Sovellus antaa käyttäjän suodattaa omia luottokorttejaan kortin numeron perusteella, käyttäen LIKE-lauseketta.

SQL Playground

Keksitkö mitä voisit lisätä LIKE-ehdon sisään yllä olevassa kyselyssä jotta saat sovelluksen palauttamaan kaikki kortit? Kun keksit, avaa labra ja mene "Credit Cards" (luottokortit) sivulle, ja koita saada kaikkien pankin asiakkaiden luottokortit ulos.

MySQLi - Suuri korttiryöstö

Tässä labrassa tutustut LIKE-lausekkeeseen ja ohitat sovelluksen pääsynhallintakontrollit injektoimalla SQL-kyselyn WHERE-lausekkeeseen ehdon jolla saat sovelluksen palauttamaan kaikkien verkkopankin asiakkaiden luottokorttitiedot.

Tavoite

Varasta kaikkien verkkopankin asiakkaiden luottokorttitiedot.

Tehtävät

Flag

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

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.