User Tools

Site Tools


second_order_sqli

This is an old revision of the document!


Second order SQL injection

Second order SQL injection je podskup SQL injection ranjivosti, koji je kompliciraniji za izvršiti, ali je i razvojnim programerima teže detektirati takvu ranjivost . Razlika je što obični (first order) SQL injection je prisutan u slučajevima kada se korisnički unos, koji se odmah izvršava unutar nekog SQL upita, nije dobro sanitiziran i osiguran, dok second order SQL injection se izvršava tako da se neki korisnički unos prvo pohrani negdje na server ili u bazu podataka, a zatim se pozivanjem neke druge funkcionalnosti, koja koristi taj pohranjeni korisnički unos izvršava SQL injection.

Jednostavan primjer bi bio aplikacija, gdje je forma za registraciju korisnika zaštićena od SQL injectiona tako što dobro interpretira unos korisnika kao string i ne može se „escape-ati“ pomoću posebnih znakova, te bi korisnik pokušajem registracijom gdje unosi vrijednost

" user' or 'a' = 'a' — " 

u polje imena novog korisnika, samo stvorio novog korisnika kojemu bi username bio

" user' or 'a' = 'a' —  "

. Za sada aplikacija radi ispravno i nema nikakvih problema niti ranjivosti. Ali kada bi sada taj korisnik pokušao koristiti funkcionalnost promjene lozinke, gdje se pri promjeni lozinke koristi SQL upit s imenom korisnika kojemu se mijenja lozinka, ako kod nije ispravno zaštićen, korisnikov username može izvršiti SQL injection unutar SQL koda u kojemu bi se trebalo odabranom korisniku promijeniti lozinku. Dio koda za mijenjanje lozinke odabranom korisniku koristi samo podatke koji se već nalaze u bazi podataka i zbog zaborava ili ne očekivanja mogućnosti ranjivosti u ovom djelu koda, tu može nedostajati odgovarajuća zaštita od SQL ranjivosti. Primjer nezaštićenog koda za izmjenu lozinke bio:

second_order_sqli.1701698132.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki