second_order_sqli
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| second_order_sqli [2026/06/18 17:37] – prerada mbunic | second_order_sqli [2026/06/18 17:52] (current) – mbunic | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====Second order SQL injection==== | ====Second order SQL injection==== | ||
| - | **Second-order SQL injection** je podskup **SQL injection** ranjivosti. Iskorištavanje ove ranjivosti je kompleksnije od uobičajenog SQL injectiona, ali ju je također teže detektirati. | + | **Second order SQL injection** je podskup **SQL injection** ranjivosti. Iskorištavanje ove ranjivosti je kompleksnije od uobičajenog SQL injectiona, ali ju je također teže detektirati. |
| - | Uobičajeni SQL injection se pojavljuje kada se korisnički unos direktno koristi za konstrukciju SQL upita, dok se second order SQL injection izvršava tako da se neki korisnički unos prvo pohrani negdje na server | + | Uobičajeni SQL injection se pojavljuje kada se korisnički unos direktno koristi za konstrukciju SQL upita, dok se second order SQL injection izvršava tako da se neki korisnički unos prvo pohrani negdje na poslužitelju |
| Jednostavan primjer bila bi aplikacija u kojoj se unos iz forme za registraciju korisnika koristi u SQL upitu za dodavanje korisnika u bazu na siguran način, ali se taj unos pri kasnijem korištenju ne koristi ispravno. | Jednostavan primjer bila bi aplikacija u kojoj se unos iz forme za registraciju korisnika koristi u SQL upitu za dodavanje korisnika u bazu na siguran način, ali se taj unos pri kasnijem korištenju ne koristi ispravno. | ||
| Line 11: | Line 11: | ||
| Pri registraciji napadač kao korisničko ime unosi vrijednost: | Pri registraciji napadač kao korisničko ime unosi vrijednost: | ||
| - | < | + | < |
| čime se samo u bazi stvara novi korisnik s tim korisničkim imenom. | čime se samo u bazi stvara novi korisnik s tim korisničkim imenom. | ||
| Line 20: | Line 20: | ||
| < | < | ||
| - | "UPDATE users SET password ='" | + | UPDATE users SET password = '" |
| </ | </ | ||
| Line 28: | Line 28: | ||
| - | < | + | < |
| + | UPDATE users SET password = ' | ||
| + | </ | ||
| - | Dvije crtice | + | Dvije crtice koje se pojavljuju u upitu su oznaka za početak |
| < | < | ||
| Line 36: | Line 38: | ||
| Radi toga se dio upita nakon pojave te oznake više ne tretira kao SQL kod, pa je zato prethodni upit ekvivalentan sljedećem: | Radi toga se dio upita nakon pojave te oznake više ne tretira kao SQL kod, pa je zato prethodni upit ekvivalentan sljedećem: | ||
| - | < | + | < |
| Ovaj upit bi promijenio lozinku svih korisnika u: | Ovaj upit bi promijenio lozinku svih korisnika u: | ||
| Line 75: | Line 77: | ||
| Kao prvi pokušaj iskorištavanja ranjivosti možemo probati napraviti korisnički račun kojemu će korisničko ime biti | Kao prvi pokušaj iskorištavanja ranjivosti možemo probati napraviti korisnički račun kojemu će korisničko ime biti | ||
| - | < | + | < |
| Nakon stvaranja korisničkog računa s ovim korisničkim imenom, vidimo da se sada unutar tablice povijesti proizvoda nalaze proizvodi svih ostalih korisnika u sustavu, kao što je prikazano na slici ispod. | Nakon stvaranja korisničkog računa s ovim korisničkim imenom, vidimo da se sada unutar tablice povijesti proizvoda nalaze proizvodi svih ostalih korisnika u sustavu, kao što je prikazano na slici ispod. | ||
| Line 87: | Line 89: | ||
| Sada možemo pokušati izvršiti SQL injection, gdje će korisničko ime biti: | Sada možemo pokušati izvršiti SQL injection, gdje će korisničko ime biti: | ||
| - | < | + | < |
| Kako bismo dohvatili imena i lozinka korisnika iz baze. Izvršavanjem ove SQL injekcije, dobivamo error koji je prikazan na slici ispod. | Kako bismo dohvatili imena i lozinka korisnika iz baze. Izvršavanjem ove SQL injekcije, dobivamo error koji je prikazan na slici ispod. | ||
| Line 110: | Line 112: | ||
| jedino znamo da se dohvaćaju svi stupci iz tablice povijest, ali ne znamo točno koliko | jedino znamo da se dohvaćaju svi stupci iz tablice povijest, ali ne znamo točno koliko | ||
| - | U sljedećem pokušaju možemo probati izvršiti SQL injection, | + | U sljedećem pokušaju možemo probati izvršiti SQL injection, |
| - | < | + | < |
| {{second_order_6.png}} | {{second_order_6.png}} | ||
| Line 122: | Line 124: | ||
| {{second_order_7.png}} | {{second_order_7.png}} | ||
| - | Sada smo uspješno izvršili SQL injection pomoću kojega smo dohvatili i prikazali korisnička imena i hasheve | + | Sada smo uspješno izvršili SQL injection pomoću kojega smo dohvatili i prikazali korisnička imena i hasheve |
| - | Kako bi dobili njegovu lozinku, odnosno „revers“ hasha njegove lozinke, možemo iskoristiti crackstation.net, | + | Kako bi dobili njegovu lozinku, odnosno „revers“ hasha njegove lozinke, možemo iskoristiti crackstation.net, |
| {{second_order_8.png}} | {{second_order_8.png}} | ||
second_order_sqli.1781804241.txt.gz · Last modified: 2026/06/18 17:37 by mbunic