HAKATEMIA
06Injektiotekniikat

(MySQL) INSERT-lausekkeiden injektoiminen

Helppo30MIN

Olemme tähän mennessä tutustuneet kahteen eri SQL-injektiohaavoittuvuuteen, joista toinen oli SELECT-lauseke kirjautumisruudussa ja toinen SELECT-lauseke luottokorttisivulla. Haavoittuvuus saattaa kuitenkin olla minkä tahansa tyyppisessä SQL-kyselyssä, ja tässä moduulissa tutustummekin injektioon joka sijaitsee INSERT-lausekkeessa.

Mikä on INSERT-lauseke?

Kun SELECT-lausekkeella haetaan dataa, INSERT-lausekkeella lisätään dataa tietokantaan.

INSERT-lausekkeen muoto on yksinkertainen:

INSERT INTO <taulun nimi> (sarakkeiden nimet) VALUES (sarakkeiden arvot)

Sanotaan esimerkiksi, että meillä on verkkopankkisovellus, joka merkitsee tapahtuneen tilisiirron tietokantaansa. Tällöin sovellus voisi kirjoittaa transaction-nimiseen tauluun sarakkeet määrä, vastaanottajan IBAN, lähettäjän IBAN, viitenumero ja viesti, ja antaa sitten arvot seuraavanlaisesti:

SQL
1INSERT INTO transaction (amount, recipient_iban, sender_iban, reference, message) VALUES (25, 'SD31RAYV75830132022610', 'AQ07SXPO99612579131812', '123', 'test')

Tai vaihtoehtoisesti, jos sovellus haluaisi lisätä tietokantaan kaksi riviä kerrallaan, se voitaisiin tehdä seuraavanlaisesti:

SQL
1INSERT INTO transaction (amount, recipient_iban, sender_iban, reference, message) VALUES (25, 'SD31RAYV75830132022610', 'AQ07SXPO99612579131812', '123', 'test'),(100, 'SD31RAYV75830132022610', 'AQ07SXPO99612579131812', '124', 'test 2')
1 / 6
Hakatemia Pro

Hakkeroinnin oppiminen alkaa tästä

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