(MySQL) INSERT-lausekkeiden injektoiminen
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:
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:
1INSERT INTO transaction (amount, recipient_iban, sender_iban, reference, message) VALUES (25, 'SD31RAYV75830132022610', 'AQ07SXPO99612579131812', '123', 'test'),(100, 'SD31RAYV75830132022610', 'AQ07SXPO99612579131812', '124', 'test 2')Hakkeroinnin oppiminen alkaa tästä
Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.