KompjûtersProgramming

Wat is de ynjeksje fan SQL?

It oantal sites en siden op it web stean stil. Foar de ûntjouwing wurde allegear nommen dy't kinne kinne. En novice web programmers brûke faak ûnfeilige en âlde koade. En dit skeelt in soad slûzen foar yndrukkers en hackers. As se ek brûke. Ien fan 'e meast klassike kwetsberens is SQL ynjeksje.

In bytsje teory

In soad minsken witte dat de measte sitten en tsjinsten op it netwurk SQL brûke om de database te bewarjen. Dit is in strukturearre query taal wêrmei jo te behearskjen en beheare de opslach fan gegevens. Der binne in soad ferskate ferzjes fan database-bestânsysteem - Oracle, MySQL, Postgre. Neffens de namme en type binne se gebrûk fan de gegevensbestanden. Dit is wêr't potensjele kwetsberens leit. As de ûntwikkelder de oanfraach net goed en feilich ferwurket, kin de oanfaller gebrûk meitsje fan dit en spesjale taktyk om tagong te krijen ta de databank, en fan dêrút nei it behear fan de folsleine side.

Om sokke situaasjes te foarkommen, moatte jo de koade yntelligje optimisje en sertifikaat sille kontrolearje hokker opdracht dy ferwurke wurdt op hokker manier.

SQL-ynjeksje-test

Om de oanwêzigens fan kwetsberens yn it netwurk te fêstigjen, binne der in soad fan makke automatisearre softwaresystemen. Mar jo kinne in ienfâldige test manuell útfiere. Om dit te dwaan, gean dan nei ien fan 'e plakken ûnder ûndersyk en besykje in database flater yn' e adresbalke te feroarjen. Bygelyks, in skript op in webside kin de fersiken net ferantwurde en net ite.

Bygelyks is der in soad_site / index.php? Id = 25

De maklikste manier is om 25 punten te setten en in fersyk te stjoeren. As der gjin flater is, dan wurde alle fersiken filters op 'e side en goedkarre ferwurke, of har útfier is útskeakele yn' e ynstellings. As de side mei problemen opnij is, dan is der in kwetsberens foar SQL ynjeksje.

Nei't jo fûn binne, kinne jo besykje it te heljen.

Om it útfieren fan dizze kwetsberheid ferlet om te witten in bytsje oer SQL-queries teams. Ien fan harren is UNION. It kombinearret ferskate resultatresultaten yn ien. Sa kinne jo it oantal fjilden yn 'e tafel berekkenje. It foarbyld fan 'e earste fraach sjocht dit sa:

  • Some_site / index.php? Id = 25 UNION SELECT 1.

Yn 'e measte gefallen moat sa'n soarte ynfier in flater meitsje. Dit betsjut dat it oantal fjilden net lykweardich is 1. Sa kinne de opsjes fan 1 en mear selektearje, jo kinne it krekte nûmer ynstelle:

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

Dat is, wannear't de flater derop ferskynt, betsjut dit dat it oantal fjilden guon binne.

Der is ek in alternative oplossing foar dit probleem. Bygelyks, as it oantal fjilden grut is - 30, 60 of 100. Dit is it kommando GROUP BY. It groeit de resultaten fan 'e query neffens guon karakteristyk, bygelyks id:

  • Some_site / index.php? Id = 25 GROUP BY 5.

As flaters net ûntfongen binne, dan binne der mear fjilden dan 5. Dêrtroch is it ferfangende farianten fan in frijwat breed oanbod mooglik te berekkenjen hoefolle fan har eins binne.

Dit foarbyld fan SQL ynjeksje is foar begjinners dy't sels besykje om te testen fan harren side. It is wichtich om te betinken dat foar unautorisearre tagong ta immen oars is in artikel fan 'e strafskoade.

De wichtichste ynjeksjes

Utfiering fan kwetsberens fia SQL-ynjeksje kin op ferskate manieren dien wurde. Dan binne de meast populêre techniken:

  • De UNION de query de SQL- ynjeksje. In ienfâldige foarbyld fan dit type is al boppe beskôge. It wurdt ymplementearre troch in flater by it kontrolearjen fan de ynkommende data, dy't net op ien of oare manier filtert.

  • Flater by SQL ynjeksje. As de namme oanjout, brûkt dizze type ek fouten, ferstjoeren útdrukken dy't syntaktysk ferkeard binne. Dęrnei wurde de antwurdkoppen tefreden, analysearret wat jo kinne de SQL ynjeksje letter útfiere.

  • Opsteapele Queries de SQL ynjeksje. Dizze kwetsberens wurdt bepaald troch de útfiering fan opfolgjende fersiken. It is karakterisearre troch de taheakke oan 'e ein fan it ";" teken. Dizze oanpak is faak ynfierd om tagong te krijen ta it útfieren fan lêzen en skriuwen fan gegevens of it behearen fan de funksjes fan it bestjoeringssysteem, as de privileezjes it fergje.

Software kompleksjes foar sykjen foar SQL-kwetsberens

De programma's dy't foar SQL-ynjeksjes beskikber binne, hawwe gewoan twa behearen: it scannen fan 'e side foar eventuele swierrichheden en it gebrûk fan harren om tagong te krijen ta de gegevens. Der binne soksoarte utilities foar hast alle bekende platfoarmen. Har funksjonaliteit makket sterker de ferifikaasje fan 'e side foar de mooglikheid om SQL-ynjeksje te hacken.

Sqlmap

In tige krêftige scanner dy't wurket mei de meast bekende DBMS. Stipe ferskillende techniken foar it útfieren fan SQL-ynjeksje. Hat de mooglikheid om it wachtwurd hântype automatysk te erkennen en it troch it wurdboek te hacken. Der is ek de funksjonaliteit fan it opladen en upload fan triemmen fan 'e tsjinner.

Ynstallaasje yn 'e Linux-omjouwing wurdt dien dien mei de folgjende kommando's:

  • Git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • Cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

Foar Windows bestiet in opsje mei in kommando-rigel, en mei in grafyske brûkersynterface.

JSQL-ynjeksje

JSQL-ynjeksje is in cross-platform-ark foar it testen fan it brûken fan SQL-kwetsberens. Skreaun yn Java, dus moat it systeem JRE ynstallearre hawwe. Kinnen fersiken behannele foar GET, POST, koptekst, cookie. It hat in handige grafyske interface.

Ynstallaasje fan dizze software is as folgjend:

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 '| Head-n 1`

De start is útfierd mei it kommando java -jar ./jsql-injection-v*.jar

Om jo side te kontrolearjen foar in SQL-kwetsberens, moatte jo adres yn it topfjild ynfiere. Se binne apart foar GET en foar POST. As it resultaat posityf is, ferskynt in lofter beskikbere tabellen yn it lofter finster. Se kinne bepaalde fertroulike ynformaasje besjoen wurde en leare.

Om te sykjen foar bestjoerlike panielen, kinne jo de ljepper "Admin side" brûke. It brûkt spesjale sjabloanen om automatysk sykjen foar systembols fan privilegearre brûkers. Hjirfan kinne jo allinich in wachtwurdbehear krije. Mar it is ek beskikber yn 'e programma' s ark.

Nei it finen fan alle swierrichheden en ynjeksje fan 'e needsaaklike queries, kin it gebrûk meitsje dat jo jo triem nei de server uploade, of oarsom, download dêrwei.

SQLi Dumper v.7

Dit programma is in maklik te brûken tool foar sykjen en útfieren fan kwetsberens yn SQL. Fertelt it op basis fan saneamde drillingen. Harren lêzings binne te finen op ynternet. Dorky foar SQL-ynjeksje is in spesjaal patroan fan sykopdrachten. Mei har help kinne jo in potinsjeel kwetsbere side fine troch elke sykmasine.

Ynstruminten foar trening

De side itsecgames.com hat in spesjale toolkit, dy't as foarbyld lit sjen kinne hoe't jo in SQL ynjeksje meitsje en dit testje. Om gebrûk te meitsjen moat it downloade en ynstallearre wurde. Argyf befet in set fan triemmen, dy't de struktuer fan 'e side is. Om it te ynstallearjen, jo sille de besteande opset fan Webservers Apache, MySQL en PHP nedich hawwe.

Útpakke it argyf yn in webtsjinner map, do hast te gean nei it adres ynfierd doe't ynstallearjen dit sêftguod. In side mei brûkersregistraasje sil iepen wêze. Hjir moatte jo jo details ynfiere en klikje "Oanmeitsje". Mei it oersetten fan de brûker yn in nij finster, freget it systeem jo om ien fan 'e testopsjes te selektearjen. Under harren binne beide beskreaun yndeksjes, en in protte oare testtaken.

It is it wurdich te beskôgjen as in foarbyld fan SQL ynjeksje type GET / sykjen. Hjir moatte jo it selektearje en drukke "Hack". Foardat de brûker in sykstring ferskynt en in neifolging fan in bepaalde side mei films. Jo kinne troch de films in lange tiid trochgean. Mar it binne allinich 10. Foarbyld kinne jo besykje om Iron Man yn te gean. In film sil ferskine, dat betsjut dat de side wurket, en de tafels dêrfan binne beskikber. No moatte wy kontrolearje oft it skript spesjale tekens filteret, benammen de quotaasje mark. Om dit te dwaan, taheakje 'oan' e adresline. En jo moatte dit dwaan nei de titel fan 'e film. De side sil in flater jilde. Flater: Jo hawwe in flater yn jo SQL-syntaksis; Kontrolearje de hantlieding dy't oerienkomt mei jo MySQL-tsjinner ferzje foar de rjochte syntaksis om te brûken by '%' 'op rige 1, dy't seit dat de karakters noch hyltyd ferkeard ferwurke wurde. Sa kinne jo besykje it fersyk te ferfangen. Mar jo moatte earst it oantal fjilden rekkenje. Om dit te dwaan, brûk de oarder troch, dy't ynsteld is nei it sifer: http://testsites.com/sqli_1.php?title=Iron+Man 'bestellen troch 2 - & action = search.

Dit kommando sil gewoan ynformaasje jaan oer de film, dat is it oantal fjilden grutter as 2. In dûbele bibel fertelt de tsjinner dat de oerbleaun frege wurde ferwurke wurde moat. No moatte wy trochgean, om alle grutte wearden op te meitsjen oant in flater útjûn wurdt. Oan 'e ein bringt it út dat de fjilden 7 binne.

No is it tiid om wat nuttich te krijen fan 'e database. It sil nedich wêze om de query yn 'e adresbalke in bytsje te feroarjen, it bringt dit formulier: http://testsites.com/sqli_1.php?title=Iron+Man' union selektearje 1, database (), brûker (), 4, wachtwurd, 6, 7 fan brûkers - & aksje = sykjen. As gefolch fan syn útfiering sjogge jo rigels mei wachtwurdhasken dy't maklik yn begryplike tekens mei ien fan 'e online tsjinsten ferwidere kinne wurde. In lyts pokoldovav en it opnimmen fan de namme fan it fjild mei in oanmelding, kinne jo tagong fan in oar oars tagong krije, bygelyks de admin site.

Der binne in protte soarten ynjeksjes yn it produkt, dêr't jo kinne praktykje. It is it wurdich te merken dat de tapassing fan dizze feardichheden yn it netwurk, op echte plakken, kriminaliteit wêze kin.

Injeksje en PHP

As regel is PHP-koade ferantwurdelik foar de needsaaklike ferwurking fan fersiken út 'e brûker. Dêrom is it op dit nivo dat jo beskermje moatte tsjin SQL ynjeksjes yn PHP te bouwen.

Om it begjin te meitsjen, is it leare om in pear ienfâldige oanbiedingen te jaan, basearre op hokker jo dit dwaan moatte.

  • De gegevens moatte altyd ferwurke wurde foardat se yn 'e database steld wurde. Jo kinne dit ymportearje troch besteande útdrukkings te brûken of troch manieren fan fragen manuell te organisearjen. Hjirby is ek it wurdich te beskôgjen dat de nûmerike wearden omset binne nei it type dat nedich is;
  • Ferwiderje it fersyk foar it ferskinen fan ferskate kontrôfsstrukturen.

No dan in bytsje oer de regels fan it opfreegjen fan MySQL om te beskermjen tsjin SQL ynjeksjes.

By it skriuwen fan eleminten foar in query, is it wichtich om de gegevens fan 'e SQL-kaaiwurden te skieden.

  • Selektearje * FROM tabel WHERE namme = Zerg.

Yn dit ûntwerp kin it systeem tinke dat Zerg de namme fan in fjild is, dus moatst it yn petearen markearje.

  • SELEKTE * FROM tabel WHERE namme = 'Zerg'.

Der binne lykwols situaasjes dêr't de wearde sels befettings befettet.

  • SELEKTE * FROM tabel WHERE namme = 'Cote d'Ivoire'.

Hjir is allinich in part fan 'e kat ferwurke, en de rest kin as in ploech wisse wurde, dat fansels net is. Dêrom komt in flater. Sa moatte jo dizze soarte fan gegevens skermje. Om dit te dwaan, brûk de backslash- \.

  • SELEKTE * FROM tabel WHERE namme = 'cat-e' Ivory. '

Alle boppesteande jildt foar strings. As it aksje foar in nûmer komt, dan hat it gjin sifers of slashes nedich. Doch moatte se needsaaklik ferplichte liede ta de ferplichte soart gegevens.

Der is in oanbefelling dat de fjildnamme yn in efterkant bepale moat. Dit symboal is op 'e lofter kant fan it toetseboerd, tegearre mei de tilde "~". Dit is needsaaklik foar MySQL om de fjildnamme krekt te ûnderskieden fan syn kaaiwurd.

Dynamyske wurk mei gegevens

Faak faak, om alle gegevens fan 'e databank te krijen, wurde dynamiken ûntfongen dy't brûkt wurde. Bygelyks:

  • SELEKTE * FROM tabel WHERE nûmer = '$ nûmer'.

Hjiryn is $ nûmer as in feldwichtdefinaasje passe. Wat sil barre as de kat-d'Ivoire it hoecht? In flater is foarkommen.

Om dizze problemen te foarkommen, kinne jo fansels ek "magyske quotes" yn 'e ynstellingen opnimme. Mar no wurde de gegevens screene wêr nedich en net nedich. Boppedat kin as de koade manuell skreaun wurde, kinne jo in pear kear tiid besykje te besykjen om sels in ynbraakresistyf systeem te meitsjen.

Om jo sels in slash te foegjen, kinne jo mysql_real_escape_string brûke.

$ Number = mysql_real_escape_string ($ nûmer);

$ Year = mysql_real_escape_string ($ jier);

$ Query = "INSERT yn tabel (getal, jier, klas) VALUE (" $ nûmer "," $ jaar ", 11).

Hoewol de koade groeid is yn 't gefal, kin it, mooglik, it folle feiliger wurkje.

Placeholders

Plakhâlders binne orizjinele markers, neffens dat it systeem leart dat in spesjale funksje yn dizze plak ferfongen wurde moat. Bygelyks:

$ Sate = $ mysqli-> te meitsjen ("SELECT Distrikt FROM nûmer WHERE namme =?");

$ Sate-> bind_param ("s", $ nûmer);

$ Sate-> útfiere ();

Dit diel fan 'e koade produsearret it query-template, bindet it variable-nûmer, en eksekutearret it. Mei dizze oanpak kinne jo de ferwurking fan it fersyk en har ymplemintaasje ferparse. Sa kinne jo sels beskermje fan 'e bineare koade-ynjeksje yn SQL-query.

Wat kin in oanfaller dwaan

Beskerming fan it systeem is in tige wichtich faktor dat net ferneatige wurde kin. Fansels sil in ienfâldige webside-kaartskartier makliker wêze om te restaurearjen. En as dit in grut portal, tsjinst, foarum is? Hokker gefolgen kinne der wêze as jo net tinke oan feiligens?

Earst kin de hacker beide yntegriteit fan 'e databank brekke, en it folslein fuortsmite. En as de side behearder of webstee gjin reservekopy makket, dan sil it net maklik wêze. Dêrnjonken kin in oanfaller, hacking op ien side, oansette nei oaren, lizzende op deselde server.

Dêrnei is de ûntfanger fan 'e persoanlike gegevens fan besikers. Hoe't se brûke - alles is beheind allinich troch de fantasy fan 'e hacker. Mar yn alle gefallen sil de gefolgen net hiel noflik wêze. Benammen as de finansjele ynformaasje befette.

Ek kin in oanfaller de databases sels fusearje, en dan jild jild foar har weromkomst.

Ferfalsking fan brûkers op namme fan 'e side behearder, dy't net eigen is, kin ek negative gefolgen ha, as fraude mooglik is.

Fermelding

Alle ynformaasje yn dit artikel is allinich foar ynformaasjeynsoarch. Brûk dit allinich foar it testen fan jo eigen projekten as swierrichheden fêstlein binne en fêst.

Foar in mear yndjipte stúdzje fan 'e technyk fan hoe't SQL-ynjeksje útfierd wurde moat, moatte jo begjinne mei de feiten en funksjes fan' e SQL-taal werklik te finen. Hoe fraachstikken binne, sykwurden, datatypen en de tapassing fan dit alles.

Ek kinne jo net sûnder begripen meitsje fan de funksje fan PHP-funksjes en HTML-eleminten. De wichtichste kwetsbere punten foar ynjeksje brûke binne de adresbalke, sykjen en ferskate fjilden. De stúdzje fan PHP-funksjes, de manier wêrop dizze ynfierd is en de mooglikheden helpe jo begrepen hoe't fouten feroare wurde kinne.

De oanwêzigens fan in protte ready-made software-arktjes jout jo in yndiaan analyse fan 'e side oer bekende kwetsberens. Ien fan 'e populêre produkten is kali linux. It is in byld fan in Linux-basearre bestjoeringssysteem dat in grut tal utilities en programma's befettet om in wiidweidige analyze fan 'e side foar krêft te fieren.

Wat jo witte moatte hoe te hack de side? It is hiel simpel - is it nedich te wêzen bewust fan 'e potinsjele vulnerabilities fan jo projekt of webside. Benammen as it der in online winkel mei online betelling, dêr't de betelling brûker gegevens kin knipe troch in oanfaller.

Foar profesjonele stúdzje fan besteande ynformaasje feiligens personiel sil by steat wêze om te kontrolearjen út de side foar in ferskaat oan kritearia en djipte. Utgeande fan in ienfâldich HTML-injecties en ta sosjale technyk en phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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