Tuntiharjoituksia 11.4.2016

SQL injection demo

Mikä on tietokannalle lähetetty kysely, kun sivua käytetään ”oikein”?

"select Population from Country where Name = '$komento'"; 
jossa komento on käyttäjän lähettämä maan nimi.

Mikä on tietokantapalvelimelle lähetetty kysely injektio-hyökkäyksessä?

hh' union select Password from mysql.user where '1'='1 
missä kysytään user kannan Password tietue.

 

Pystytkö päättelemään mitä eri osat injektio-lausekkeessa tarkoittavat? Miksi lopussa on turhan tuntuinen where ’1’=’1 (vihje: jätä se pois, ja mieti mikä kysely on silloin)?

hh voi korvata millä tahansa, sillä se on ensimmäinen arvo, joka kyselyssä annetaan. Union select yhdistää tähän ensimmäiseen kyselyyn toisen kyselyn, jolla haluamme saada salasanat selville.

Esimerkiksi, jos käyttäisimme hh:n tilalla sanaa Ukraine saisimme seuraavanlaisen tuloksen:

50456000
*AA5975DCB17A0B01FA1172EEEE4035E701E44EED
*2C8DD4BCDF7DFA69B5E4ED29B2F44FAB2A9190BB
*E187AE32B324A0348AC26FC2EC8BC7F6F23ECDF1
*AA1420F182E88B9E5F874F6FBE7459291E8F4601
*A154C52565E9E7F94BFC08A1FE702624ED8EFFDA

 

Kun lopussa on where ’1’=’1  kysely on aina tosi ja kaikkien käyttäjien salasanat tulevat näkyville. Ilman tätä osaa kysely ei toimi. Tämä tehdään, jotta heittomerkkien määrä ja paikat täsmäisivät. ’1’=’1 voidaan korvata esimerkiksi ’2’=’2 tai vaikka ’a’=’a .

Miten estäisit injektion käytön, jos olisit kehittämässä www-palvelua?

Esimerkiksi tekemällä kaikista kyselyistä parametrillisia, jolloin kyselyyn voi laittaa vain tiettynlaisia arvoja. Voitaisiin myös kieltää tiettyjen merkkien käyttö esimerkiksi heittomerkit.

SQL injection demo 2

What is the SQL query when you type the injection text?

select User from mysql.user where User=’Tiko’ and Password=password(hh’) or (’1’=’1’)

Tässäkin arvon ”hh” voi vaihtaa toiseksi ja kysely toimii silti.

How does injection work or what the query means?

Toimii samanlaisesti kuin ensimmäinen.

Can the injection be prevented and how?

Parametrilliset kyselyt.

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

w

Muodostetaan yhteyttä palveluun %s