RekenaarsProgrammering

Wat is die inspuiting van SQL?

Die aantal plekke en bladsye op die web is steeds groeiende. Geneem vir die ontwikkeling van al diegene wat dit kan. En beginner Web ontwikkelaars gebruik dikwels onveilig en oud-kode. En dit skep 'n baie skuiwergate vir misdadigers en hackers. As hulle is. Een van die mees klassieke kwesbaarhede - SQL-inspuiting.

'N bietjie van teorie

Baie mense weet dat die meerderheid van webwerwe en dienste op die netwerk met behulp van die SQL databasis stoor. Dit is 'n gestruktureerde navraagtaal wat jou toelaat om te beheer en te bestuur die stoor van data. Daar is baie verskillende weergawes van die databasis management system databasis - Oracle, MySQL, Postgre. Ongeag van die naam en tipe, wat hulle gebruik dieselfde navraag data. Dit is hier waar die potensiaal kwesbaarheid lê. As die ontwikkelaar versuim het om behoorlik te hanteer en veilig te vra, kan 'n aanvaller voordeel te trek uit hierdie en spesiale taktiek gebruik om toegang tot die databasis verkry, en dan - en al die werf bestuur.

Om sulke situasies te vermy, moet jy die kode behoorlik te optimaliseer en te monitor in 'n manier waarop 'n versoek word verwerk.

Check vir SQL-inspuiting

Om die teenwoordigheid van 'n kwesbaarheid in die netwerk te vestig het 'n gewig van klaar outomatiese sagteware stelsels. Maar dit is moontlik 'n eenvoudige tjek met die hand uit te voer. Om dit te doen, gaan na een van die toets webwerwe en in die adres bar om te probeer om 'n databasis fout veroorsaak. Byvoorbeeld, kan 'n script op die terrein nie hanteer die versoek en moet hulle nie te knip.

Byvoorbeeld, daar nekiy_sayt / index.php? Id = 25

Die maklikste manier - tot 25 sit nadat die kwotasie en stuur die versoek. Indien geen fout, óf op die terrein en filter alle versoeke is korrek hanteer word, of is afgeskakel in die instellings van hul produksie. As 'n webblad herlaai word met die probleme, dan is die kwesbaarheid vir SQL-inspuiting is.

Nadat sy uitgevind het, kan jy probeer om ontslae te raak van dit.

Om hierdie kwesbaarheid behoefte om 'n bietjie oor weet implementeer SQL-navrae spanne. Een van hulle - Unie. Dit bring 'n paar navraag resultate in een. So kan ons die aantal velde in die tabel te bereken. VOORBEELD eerste navraag is:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

In die meeste gevalle, moet hierdie rekord 'n fout op te wek. Dit beteken dat die aantal velde is nie gelyk aan 1. So, die keuse van die opsies van 1 of meer, is dit moontlik om die presiese aantal vas te stel:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

Dit wil sê, wanneer die fout nie meer sal verskyn, beteken dit dat die aantal velde om te raai.

Daar is ook 'n alternatiewe oplossing vir hierdie probleem. Byvoorbeeld, wanneer 'n groot aantal van velde - 30, 60 of 100. Hierdie opdrag GROUP BY. Dit groepe die resultate van 'n soektog op enige gronde, byvoorbeeld id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

As die fout is nog nie ontvang het nie, dan is die velde meer as 5. So, vervang opsies van 'n redelik wye verskeidenheid, is dit moontlik om werklik te bereken hoeveel van hulle.

Hierdie voorbeeld SQL-inspuiting - vir beginners wat wil om hulself te probeer in die toets van sy webwerf. Dit is belangrik om te onthou dat vir ongemagtigde toegang tot 'n ander beskikbaar artikel van die Wet op Kriminele Kode.

Die hooftipes inspuiting

Implementeer kwesbaarheid deur SQL-inspuiting in verskeie belichaming. Volgende is die mees populêre metodes:

  • Die vakbond die navraag die SQL -inspuiting. 'N Eenvoudige voorbeeld van hierdie tipe is reeds hierbo ondersoek is. Daar word besef as gevolg van 'n fout in die nagaan van die inkomende data, wat nie gefiltreer.

  • -Fout gebaseer SQL-inspuiting. Soos die naam aandui, hierdie tipe gebruik ook 'n fout, stuur uitdrukkings saamgestel sintakties korrek is nie. Dan is daar die onderskepping van die reaksie headers, te ontleed wat uit later SQL-inspuiting uitgevoer kan word.

  • Stacked navrae die SQL -inspuiting. Hierdie kwesbaarheid word bepaal deur die verrigting van opeenvolgende versoeke. Dit word gekenmerk deur die byvoeging aan die einde van die teken ";". Hierdie benadering is dikwels geïmplementeer om toegang te verkry tot die implementering van lees en data te skryf of bedryfstelsel funksies, indien voorregte toelaat nie.

Sagteware vir die soek SQL-kwesbaarhede

Is daar vir SQL-inspuiting, die program het gewoonlik twee komponente - 'n webwerf te scan vir moontlike kwesbaarhede en gebruik dit om toegang tot data te verkry. Daar is 'n paar tools vir byna alle bekende platforms. Hul funksies fasiliteer grootliks nagaan webwerf om jou SQL-inspuiting kraak.

Sqlmap

Baie kragtige skandeerder wat werk met die meeste databasisse. Dit word ondersteun deur verskeie metodes van implementering van SQL-inspuiting. Dit het die vermoë om die tipe wagwoord hash krake en woordeboek outomaties herken. Hede en funksionele lêer oplaai en aflaai van 'n bediener.

Installasie op Linux is uitgevoer met behulp van die opdragte:

  • git kloon https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

Vir Windows is beskikbaar as 'n opsie met die command line en grafiese gebruikerskoppelvlak.

jSQL inspuiting

jSQL Inspuiting - 'n kruis-platform hulpmiddel vir die toets van die gebruik van SQL kwesbaarhede. Geskryf in Java, so die stelsel geïnstalleer moet word JRE. In staat is om te hanteer KRY versoeke, post, kop, koekie. Dit het 'n gerieflike grafiese koppelvlak.

Die installering van hierdie sagteware pakket is soos volg:

wget https://github.com/`curl s https: //github.com/ron190/jsql-injection/releases | grep-E-o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} Jar '| kop-N 1`

Lansering is deur die gebruik van die opdrag java-jar ./jsql-injection-v*.jar

Met die oog op die toets site op SQL-kwesbaarheid begin, moet jy die adres in te voer in die top veld. Hulle is afsonderlike vir AOO en pos. Met 'n positiewe uitslag, sal die lys van beskikbare tafels verskyn in die linker venster. Jy kan dit sien en leer 'n paar vertroulike inligting.

blad «Admin bladsy» wat gebruik word om die administratiewe panele vind. Op dit deur middel van spesiale templates outomaties soek die stelsel rekords bevoorregte gebruikers. Van hulle kan jy net 'n gemors van die wagwoord te kry. Maar hy het in die toolbox van die program.

Na die vind van al die probleme en inspuiting nodig navrae, sal die instrument toelaat dat die bediener na in jou lêer te vul of, omgekeerd, laai dit van daar af.

SQLi dumper vers 7

Hierdie program - maklik om te gebruik hulpmiddel vir die vind van en die uitvoering van SQL kwesbaarhede. Dit lei tot die VN is gebaseer op die sogenaamde Dorkas. Hul lys kan gevind word op die internet. Dorca vir SQL-inspuiting - dit is spesiale templates van navrae. Met hul hulp, kan jy potensieel kwesbaar webwerf deur 'n soektog te vind.

Gereedskap vir opleiding

Itsecgames.com op die terrein is daar 'n spesiale stel gereedskap wat toelaat dat die voorbeeld wys hoe om SQL-inspuiting doen en toets dit. Ten einde voordeel te trek, is dit nodig om af te laai en te installeer. Die argief bevat 'n stel van lêers, wat is die struktuur van die site. Om te installeer dit benodig in die bestaande stelsel van stel Apache webbediener, MySQL en PHP.

Pak die argief in 'n web bediener gids, jy het om te gaan na die adres aangegaan by die installering van hierdie sagteware. A bladsy met registrasie gebruiker. Hier moet jy jou inligting in te voer en klik «Skep». die gebruiker beweeg na 'n nuwe skerm, die stelsel vra jy na een van die toets gevalle kies. Onder hulle is daar beide beskryf deur inspuiting, en baie ander toetsitems.

Dit is die moeite werd oorweging van 'n voorbeeld van tipe SQL-inspuiting AOO / Search. Hier moet jy om dit te kies en klik «Hack». Voor die gebruiker sal verskyn, en die soektog string nabootsing van 'n fliek site. Uit te sorteer films kan lank wees. Maar daar is net 10. Byvoorbeeld, kan jy probeer om die Iron Man betree. Dit sal die film, dan die werf werk, en die tafels wat dit bevat te dui. Nou moet ons kyk of spesiale karakters script filters, in die besonder kwotasie. Om dit te doen, voeg 'in die adres bar. " Verder moet dit gedoen word nadat titel die film se. Die webwerf sal 'n fout Fout gee: Jy moet 'n fout in jou SQL syntax; check die handleiding wat ooreenstem met jou MySQL bediener weergawe vir die reg sintaksis om naby '%' gebruik 'op lyn 1, wat bepaal dat die karakters is nog nie korrek hanteer word. Sodat jy kan probeer om jou versoek te vervang. Maar ons moet eers bereken die aantal velde. Dit word gebruik vir hierdie bevel deur, wat lei na die aanhalings: http://testsites.com/sqli_1.php?title=Iron+Man 'order deur 2 - & Action = soek.

Hierdie opdrag gee net inligting oor die film, dit is, die aantal velde is groter as 2. Die dubbel koppelteken vertel die bediener wat die ander versoeke moet weggegooi word. Nou het ons om uit te sorteer, om die verhoging van belang nie, solank die fout nie gedruk. Op die ou end, dit blyk dat die velde sal wees 7.

Nou is dit tyd om iets nuttig uit die basis te kry. Sal effens versoek verander in die adres bar, bring dit 'n vorm: http://testsites.com/sqli_1.php?title=Iron+Man se unie kies 1, databasis (), gebruiker (), 4, wagwoord, 6, 7 van gebruikers - & Action = soek. As gevolg van die implementering daarvan sal die string met die wagwoord hashes, wat maklik kan omskep word in verstaanbare simbole gebruik te maak van een van die aanlyn-dienste te vertoon. A opgetower 'n bietjie en opgetel het 'n veld naam met 'n login, kan jy toegang tot toetrede iemand anders se kry, soos admin van die site.

Die produk het 'n gewig spesies inspuiting tipes, waarop om te oefen. Daar moet onthou word dat die toepassing van hierdie vaardighede in die netwerk op werklike plekke 'n kriminele oortreding kan wees.

Inspuiting en PHP

As 'n reël, die PHP-kode en is verantwoordelik vir die nodige verwerking versoeke kom van die gebruiker. Daarom, op hierdie vlak wat jy nodig het om 'n verdediging teen SQL-inspuiting in PHP bou.

Eerstens, laat ons gee 'n paar eenvoudige riglyne, op grond waarvan dit nodig is om dit te doen.

  • Data moet altyd voor in die databasis geplaas word verwerk. Dit kan gedoen word óf deur die gebruik van bestaande uitdrukkings, of deur met die hand te organiseer navrae. Ook hier moet in ag neem dat die numeriese waardes word omgeskakel na die tipe wat nodig is;
  • Vermy gevra verskeie beheerstrukture.

Nou 'n bietjie oor die reëls van die opstel van navrae in MySQL te beskerm teen SQL-inspuiting.

In die opstel van enige uitdrukkings te bevraagteken, is dit belangrik om die data te skei van die SQL sleutelwoorde.

  • SELECT * FROM tafel WAAR name = Zerg.

In hierdie opset, kan die stelsel dink dat Zerg - die naam van enige veld, so wat jy nodig het om dit te sluit in aanhalingstekens.

  • SELECT * FROM tafel WAAR name = "Zerg.

Daar is egter tye wanneer die waarde self bevat aanhalings.

  • SELECT * FROM tafel WAAR name = "Ivoorkus.

Hier word slegs hanteer deel van Côte d, en die res kan as 'n span, wat natuurlik nie waargeneem. Daarom, 'n fout begaan. Dan is hierdie soort vertoning data wat jy nodig het. Om dit te doen, gebruik 'n back slash - \.

  • SELECT * FROM tafel WAAR name = "kat-d \ 'Ivoire'.

Al die bogenoemde verwys na die rye. As die aksie vind plaas met 'n aantal, dan is dit nie enige aanhalings of houe nodig. Hulle moet egter verwag word om met geweld lei tot die gewenste tipe data.

Daar is aanbevelings wat die naam veld moet ingesluit in backquotes. Hierdie simbool is aan die linkerkant van die sleutelbord, saam met 'n tilde "~". Dit is om te verseker dat MySQL akkuraat kon onderskei die naam van die veld van jou navraag.

Dinamiese werk met data

Baie dikwels, om enige inligting te kry uit die databasis met behulp van navrae, dinamiese gegenereerde. Byvoorbeeld:

  • SELECT * FROM tafel WAAR aantal = '$ aantal ".

Hier is die veranderlike $ aantal geslaag as die bepaling van die waarde van die veld. Wat sal gebeur as dit kry 'Ivoorkus? Fout.

Om hierdie probleme te vermy, natuurlik, jy kan die "magic aanhalings" instellings insluit. Maar nou is die data sal vertoon word waar nodig en nie nodig nie. Verder, as die kode is geskryf met die hand, jy kan 'n bietjie meer tyd weerstand teen krake die stelsel self te skep spandeer.

Vir die onafhanklike byvoeging van 'n streep kan mysql_real_escape_string gebruik.

$ Nommer = mysql_real_escape_string ($ aantal);

$ Jaar = mysql_real_escape_string ($ jaar);

$ Query = "voeg in tabel (aantal, jaar, klas) VALUES ( '$ aantal", "$ jaar, 11)".

Hoewel die kode en in volume toegeneem, maar potensieel sou dit baie veiliger werk.

plekhouers

Plekhouers - 'n soort van merkers waarvoor die stelsel erken dat dit die plek waar jy nodig het om 'n spesiale funksie te vervang. Byvoorbeeld:

$ Sate = $ mysqli-> berei ( "Kies Distrik van Nommer WAAR Naam =?");

$ Sate-> bind_param ( "s", $ aantal);

$ Sate-> uit te voer ();

Hierdie afdeling van die kode neem 'n opleiding versoek sjabloon en dan bind die veranderlike nommer, en voer dit. Hierdie benadering kan jy die soektog verwerking en die implementering daarvan verdeel. So, kan dit gered word van die gebruik van kwaadwillige kode is SQL.

Wat kan 'n aanvaller

Beskerming van die stelsel - 'n baie belangrike faktor, wat nie kan verwaarloos word nie. Natuurlik sal 'n eenvoudige business card webwerf makliker om te herstel. En as dit is 'n groot portaal, diens, forum? Wat is die gevolge as jy nie dink oor die veiligheid?

In die eerste plek kan 'n hacker die integriteit van beide die basis te breek en heeltemal verwyder. En as die webwerf administrateur of Hoster n rugsteun maak nie, sal jy moeilike tye het. Bo alles, 'n indringer, kraak 'n enkele site, kan jy gaan na die ander gepos in dieselfde bediener.

Volgende is die diefstal van persoonlike inligting van besoekers. Hoe om te gebruik - alles word slegs deur die verbeelding van 'n hacker. Maar in elk geval, die gevolge sal nie baie lekker wees. Veral as vervat finansiële inligting.

Ook, kan die aanvaller databasis jouself saam te smelt en dan ontwringen geld vir sy terugkeer.

Verkeerde inligting gebruikers namens die webwerf administrateur, kan die persoon dit nie, ook negatiewe gevolge as moontlik feite bedrog wees.

gevolgtrekking

Alle inligting in hierdie artikel is bedoel vir inligting doeleindes. Gebruik dit net nodig om hul eie projekte te toets wanneer dit kwesbaarhede ontdek en aan te spreek nie.

Vir 'n meer in-diepte studie van tegnieke oor hoe om SQL-inspuiting te voer, is dit nodig om te begin met die werklike navorsing vermoëns en funksies van die SQL taal. Soos saamgestel navrae, sleutelwoorde, datatipes, en die gebruik van dit alles.

Ook kan dit nie doen sonder die begrip van die werking van PHP en HTML elemente funksies. Die primêre gebruik kwesbaar punte vir inspuiting - 'n adres lyn, en verskeie search veld. Leer PHP funksies, sal die metode van implementering en funksies uit te vind hoe om foute te vermy.

Die teenwoordigheid van baie klaargemaakte sagteware gereedskap toelaat vir in-diepte analise op die webwerf bekend kwesbaarhede. Een van die gewildste produkte - kali linux. Hierdie beeld van 'n Linux-gebaseerde bedryfstelsel, wat 'n groot aantal van gereedskap en programme wat omvattende ontleding van die werf krag kan uit te voer bevat.

Wat jy nodig het om te weet hoe om die webwerf te hack? Dit is baie eenvoudig - dit is nodig om bewus te wees van die moontlike kwesbaarhede van jou projek of webwerf. Veral as dit 'n aanlyn winkel met aanlyn betaling, waar die betaling gebruiker data kan bedreig deur 'n aanvaller.

Vir professionele studie van bestaande inligting sekuriteitspersoneel sal in staat wees om te kyk na die webwerf vir 'n verskeidenheid van kriteria en diepte. Vanaf 'n eenvoudige HTML-inspuitings en sosiale ingenieurswese en phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 af.unansea.com. Theme powered by WordPress.