Mga computerProgramming

Ano ang isang SQL injection?

Ang bilang ng mga site at mga pahina sa web ay lumalaking patuloy. Kinuha para sa pag-unlad ng lahat ng mga taong maaari. At baguhan Web developer madalas na ginagamit ng mga hindi ligtas na at lumang code. At ito ay lumilikha ng isang pulutong ng mga butas para sa mga kriminal at hackers. Kaysa sa kanila. Isa sa mga pinaka classic kahinaan - SQL-iniksyon.

Ang isang piraso ng teorya

Maraming mga tao ang malaman na ang karamihan ng mga site at serbisyo sa network ay gumagamit ng SQL database imbakan. Ito ay isang naka-balangkas na query wika na nagpapahintulot sa iyo upang makontrol at pamahalaan ang imbakan ng data. Mayroong maraming iba't ibang mga bersyon ng ang database database management system - Oracle, MySQL, Postgre. Hindi alintana ang pangalan at uri, ginagamit nila ang parehong data query. Ito ay dito na namamalagi sa mga potensyal na kahinaan. Kung nag-develop ay nabigo upang mahawakan nang maayos at ligtas na humiling, isang magsasalakay ay maaaring samantalahin ng mga ito at gumamit ng mga espesyal na taktika upang makakuha ng access sa database, at pagkatapos ay - at sa lahat ng pamamahala ng site.

Upang maiwasan ang ganitong sitwasyon, kailangan mo upang maayos na i-optimize ang code at sa malapit na subaybayan sa isang paraan kung saan ang isang kahilingan ay pinoproseso.

Suriin para sa mga SQL-iiniksyon

Upang magtatag ng pagkakaroon ng isang kahinaan sa network ay may isang bigat ng tapos automated software system. Ngunit ito ay posible upang magsagawa ng isang simpleng check mano-mano. Upang gawin ito, pumunta sa isa sa mga site ng pagsubok at sa address bar upang subukang maging sanhi ng isang database error. Halimbawa, ang isang script sa site ay hindi maaaring panghawakan ang kahilingan at huwag putulin ang mga ito.

Halimbawa, may nekiy_sayt / index.php? Id = 25

Ang pinakamadaling paraan - upang ilagay ang 25 pagkatapos ng quote at ipadala ang kahilingan. Kung walang naganap na error, alinman sa site at filter ang lahat ng mga kahilingan ay hinahawakan nang tama, o ay hindi pinagana sa mga setting ng kanilang output. Kung ang isang pahina ay reloaded sa mga problema, pagkatapos ay ang kahinaan sa SQL-iniksyon ay.

Pagkatapos siya natagpuan out, maaari mong subukan sa kumuha alisan ng ito.

Upang ipatupad ang kahinaan na kailangan upang malaman ang kaunti tungkol sa SQL-query koponan. Isa sa mga ito - Union. Ito ay pinagsasama-sama ang ilang mga resulta ng query sa isa. Upang maaari naming kalkulahin ang bilang ng mga patlang sa talahanayan. EXAMPLE unang tanong ay:

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

Sa karamihan ng mga kaso, ang talaang ito ay dapat bumuo ng isang error. Nangangahulugan ito na ang bilang ng mga patlang ay hindi katumbas ng 1. Kaya, pagpili ng opsyon ng 1 o higit pa, ito ay posible na magtatag ng kanilang eksaktong numero:

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

Iyon ay, kapag ang mga error ay hindi na lalabas, nangangahulugan ito na ang bilang ng mga patlang hulaan.

Mayroon ding isang alternatibong solusyon sa problemang ito. Halimbawa, kapag ang isang malaking bilang ng mga patlang - 30, 60 o 100. Ito utos GROUP BY. Ito ay grupo ng mga resulta ng isang query sa anumang grounds, halimbawa id:

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

Kung ang error ay hindi natanggap, pagkatapos ay ang patlang ng higit sa 5. Kaya, substituting pagpipilian mula sa isang medyo malawak na hanay, ito ay posible upang makalkula kung gaano karaming ng mga ito ang tunay na.

Ito halimbawa SQL-iniksyon - para sa mga nagsisimula na nais na subukan ang kanilang mga sarili sa pagsubok ng mga site nito. Ito ay mahalaga na tandaan na para sa hindi awtorisadong pag-access sa ibang available na artikulo ng Kriminal Code.

Ang pangunahing uri ng mga pag-iiniksyon

Ipatupad ang kahinaan sa pamamagitan ng SQL-iniksyon sa ilang mga embodiments. Susunod ay ang pinaka-popular na mga paraan:

  • Ang UNION ang query sa SQL iniksyon. Ang isang simpleng halimbawa ng ganitong uri ay nai-sinusuri sa itaas. Ito ay natanto dahil sa isang error sa checking papasok na data, na kung saan ay hindi na-filter.

  • Error na nakabatay sa SQL iniksyon. Bilang ang pangalan ay nagpapahiwatig, ang ganitong uri din ay gumagamit ng isang error, ang pagpapadala ng mga expression na binubuo syntactically tama. Pagkatapos doon ay ang pagharang ng mga header ng tugon, pag-aaral na maaaring natupad sa ibang pagkakataon SQL-iniksyon.

  • Isinalansan query sa SQL iniksyon. kahinaan na ito ay natutukoy sa pamamagitan ng pagsasagawa ng sunud-sunod na mga kahilingan. Ito ay nailalarawan sa pamamagitan ng pagdaragdag sa dulo ng ang pag-sign ";". diskarte na ito ay madalas na ipinatupad upang ma-access ang pagpapatupad ng basahin at isulat ang data o operating system function, kung pribilehiyo payagan ito.

Software para sa paghahanap ng SQL-kahinaan

Mayroon bang para sa SQL-iiniksyon, ang programa ay karaniwang ay may dalawang bahagi - ang isang site-scan para sa mga posibleng mga kahinaan at gamitin ang mga ito upang makakuha ng access sa data. Mayroong ilang mga tool para sa halos lahat ng mga kilalang mga platform. Ang kanilang mga pag-andar lubos na pinapadali pagsuri website upang i-crack ang iyong SQL-iniksyon.

Sqlmap

Napakalakas scanner na gumagana sa karamihan ng mga database. Ito ay sumusuporta sa iba't-ibang mga paraan ng pagpapatupad ng SQL-iniksyon. Ito ay may kakayahan upang awtomatikong makilala ang mga uri ng password hash cracking at diksyunaryo. Kasalukuyan at functional-upload ng file at i-download mula sa isang server.

Pag-install sa Linux ay ginanap gamit ang command:

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

Para sa Windows ay magagamit bilang isang opsyon sa command line at graphical user interface.

jSQL Injection

jSQL Injection - isang cross-platform tool para sa pagsubok ng paggamit ng SQL kahinaan. Nakasulat sa Java, sa gayon ang sistema ay dapat na naka-install JRE. Magagawang upang mahawakan ang GET kahilingan, POST, header, cookie. Ito ay may maginhawang graphical interface.

Ang pag-install ng package na ito software ay ang mga sumusunod:

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 `

Launching ay sa pamamagitan ng paggamit ng command java-jar ./jsql-injection-v*.jar

Upang simulan ang pagsubok na site sa SQL-kahinaan, kailangan mong ipasok ang address sa itaas na field. Ang mga ito ay hiwalay na para sa GET at POST. Sa pamamagitan ng isang positibong resulta, ang listahan ng mga magagamit na mga talahanayan ay lilitaw sa kaliwang window. Maaari mong tingnan ang mga ito at malaman ang ilang mga lihim na impormasyon.

tab «pahinang Admin» magamit upang mahanap ang mga administrative panel. Dito sa pamamagitan ng mga espesyal na mga template Awtomatikong naghahanap ang sistema Itinatala may pribilehiyo gumagamit. Mula sa mga ito maaari kang makakuha lamang ng isang hash ng password. Ngunit siya ay may sa toolbox ng program.

Pagkatapos ng paghahanap ng lahat ng kahinaan at iniksyon kinakailangang mga pagtatanong, ang tool ay magbibigay-daan sa server upang punan ang iyong file o, pasalungat, i-download ito mula doon.

SQLi Dumper V.7

Ito programa - madaling gamitin na tool para sa paghahanap at pagpapatupad ng SQL kahinaan. Ito ay gumagawa ng UN ay batay sa tinaguriang Dorcas. Ang kanilang listahan ay makikita sa Internet. Dorca para sa SQL-iniksyon - ang mga ito ay mga espesyal na mga template ng mga query sa paghahanap. Sa kanilang tulong, maaari kang makahanap ng mga potensyal na mahina laban site sa pamamagitan ng anumang mga search engine.

Mga tool para sa pagsasanay

Itsecgames.com sa site na may isang espesyal na hanay ng mga tool na nagbibigay-daan sa mga halimbawa ay nagpapakita kung paano gawin SQL iniksyon at subukan ito. Upang makinabang, ito ay kinakailangan upang i-download at i-install. archive ay naglalaman ng isang hanay ng mga file, na kung saan ay ang istraktura ng site. Upang i-install ito ay kailangan sa mga umiiral na sistema ng mga hanay ng Apache web server, MySQL at PHP.

Ma-unpack ang archive sa isang folder web server, kailangan mong pumunta sa address na ipinasok kapag pag-install ng software. Ang isang pahina na may pagpaparehistro ng user. Narito kailangan mong ipasok ang iyong impormasyon at i-click ang «Lumikha». Ang paglipat ng user sa isang bagong screen, ang sistema ay prompt sa iyo upang piliin ang isa sa mga kaso ng pagsubok. Kasama ng mga ito ay parehong inilarawan sa pamamagitan ng iniksyon, at marami pang ibang mga test item.

Ito ay nagkakahalaga ng isinasaalang-alang ang isang halimbawa ng SQL-iniksyon type GET / Search. Narito ang kailangan mo upang piliin ito at i-click ang «Hack». Bago ang gumagamit ay lilitaw, at ang string sa paghahanap imitasyon ng isang pelikula site. Upang ayusin ang mga pelikula ay maaaring maging mahaba. Ngunit may mga lamang 10. Halimbawa, maaari mong subukan ang upang ipasok ang Iron Man. Ito ay nagpapahiwatig ng pelikula, pagkatapos ay ang site ay gumagana, at mga tapyas na nilalaman nito. Ngayon kami ay may upang suriin kung ang mga filter espesyal na character script, sa mga partikular na quote. Upang gawin ito, idagdag ang 'sa address bar. " Bukod dito, ito ay dapat gawin pagkatapos ng pamagat ng pelikula. Ang site ay magbibigay ng isang error Error: Mayroon kang isang error sa iyong SQL syntax; check ang manual na tumutugma sa iyong bersyon MySQL server para sa tamang syntax na gamitin malapit sa '%' 'sa linya 1, na estado na ang mga character ay hindi pa rin hawakan ng tama. Kaya maaari mong subukan na kapalit ng iyong kahilingan. Ngunit kailangan muna naming kalkulahin ang bilang ng mga patlang. Ito ay ginagamit para sa order sa pamamagitan ng, na kung saan ay ipinakilala pagkatapos ng quote: http://testsites.com/sqli_1.php?title=Iron+Man 'order sa pamamagitan ng 2 - & action = paghahanap.

command na ito ay nagpapakita lamang ng impormasyon tungkol sa mga pelikula, ibig sabihin, ang bilang ng mga patlang ay mas malaki kaysa 2. Ang double gitling nagsasabi sa server na ang iba pang mga kahilingan ay dapat na tinapon. Ngayon kami ay may upang uriin, paglalagay ng pagtaas ng kahalagahan hangga't ang error ay hindi naka-print. Sa katapusan, ito ay lumiliko out na ang mga patlang ay magiging 7.

Ngayon ay oras na upang makakuha ng isang bagay na kapaki-pakinabang sa labas ng base. Makakaapekto ba ang bahagyang baguhin ang mga kahilingan sa address bar, nagdadala ito sa isang form: http://testsites.com/sqli_1.php?title=Iron+Man 'union piliin ang 1, database (), user (), 4, password, 6, 7 mula sa mga user - & action = paghahanap. Bilang isang resulta ng kanyang pagsasagawa ay ang pagpapakita ng string na may hash password, na maaaring madaling-convert sa maliwanag na mga simbolo gamit ang isa sa mga serbisyong online. Ang isang conjured isang maliit at kinuha ang isang pangalan ng field na may isang pag-login, maaari mong makakuha ng access sa ibang tao entry, tulad ng admin ng site.

Ang produkto ay may isang bigat species uri iniksyon, na kung saan sa pagsasanay. Dapat ito ay remembered na ang application ng mga kasanayan sa network sa real mga site ay maaaring maging isang kriminal na pagkakasala.

Injection at PHP

Bilang isang panuntunan, ang PHP-code at responsable para sa ang mga kinakailangang mga kahilingan sa pagpoproseso ng darating na mula sa user. Samakatuwid, sa antas na ito kailangan mong bumuo ng isang pagtatanggol laban sa SQL-iniksyon sa PHP.

Una, sabihin magbigay ng ilang simpleng mga alituntunin, sa batayan ng kung saan ito ay kinakailangan na gawin ito.

  • Data ay dapat palaging ma-proseso bago ilagay sa database. Ito ay maaaring gawin ang alinman sa pamamagitan ng paggamit ng mga umiiral na mga expression, o sa pamamagitan ng pag-aayos ng mga query sa mano-mano. Dito, masyadong, ay dapat na kumuha sa account na ang numerong halaga ay convert sa uri ng iyon ay kinakailangan;
  • Iniwasan sinenyasan iba't-ibang mga istraktura control.

Ngayon ng kaunti tungkol sa mga panuntunan ng kino-compile ang mga query sa MySQL upang maprotektahan laban sa SQL-iniksyon.

Sa pagguhit ng up ng anumang expression upang i-query ito ay mahalaga upang paghiwalayin ang data mula sa SQL mga keyword.

  • PUMILI * MULA SA mesa SAAN pangalan = Zerg.

Sa configuration na ito, ang sistema ay maaaring isipin na Zerg - ang pangalan ng anumang field, kaya kailangan mong ilakip ito sa mga panipi.

  • PUMILI * MULA SA mesa SAAN pangalan = 'Zerg'.

Subalit, may mga oras kung kailan ang halaga mismo ay naglalaman ng mga quotes.

  • PUMILI * MULA SA mesa SAAN pangalan = 'Côte d'Ivoire'.

Narito lamang mahawakan ang bahagi ng Côte d, at ang iba ay maaaring perceived bilang isang team, na kung saan, siyempre, hindi. Samakatuwid, ang isang error nangyayari. Pagkatapos ay kailangan mo ng ganitong uri ng data screening. Upang gawin ito, gamitin ang backslash - \.

  • PUMILI * MULA SA mesa SAAN pangalan = 'cat-d \' Ivoire '.

Lahat ng nasa itaas ay tumutukoy sa mga hilera. Kung ang aksyon ay tumatagal ng lugar na may isang numero, pagkatapos ito ay hindi kailangan ng anumang mga quote o slashes. Gayunman, sila ay dapat na kinakailangan upang papuwersa humantong sa ang nais na uri ng data.

May mga rekomendasyon na field ng pangalan ay dapat na nakapaloob sa backquotes. Ang simbolong ito ay nasa kaliwang bahagi ng keyboard, kasama ang isang tilde "~". Ito ay upang matiyak na ang MySQL ay maaaring tumpak na makilala ang mga pangalan ng patlang mula sa iyong keyword.

Dynamic na trabaho na may data

Very madalas, upang makuha ang anumang data mula sa database gamit query, magilas na binuo. Halimbawa:

  • PUMILI * MULA SA mesa SAAN number = '$ number'.

Dito, ang mga variable na $ numero ay naipasa bilang pagtukoy sa halaga ng field. Ano ang mangyayari kung ito ay makakakuha ng 'Côte d'Ivoire'? Error.

Upang maiwasan ito problema, siyempre, maaari mong isama ang "magic quotes" setting. Ngunit ngayon ang data ay screen kung saan kinakailangan at hindi kinakailangan. Sa karagdagan, kung ang code ay nakasulat sa pamamagitan ng kamay, maaari kang gumastos ng isang maliit na mas maraming oras upang lumikha ng lumalaban sa pag-crack ang sistema mismo.

Para sa mga independiyenteng karagdagan ng isang slash maaaring gamitin mysql_real_escape_string.

$ Number = mysql_real_escape_string ($ number);

$ Taon = mysql_real_escape_string ($ taon);

$ Query = "INSERT INTO table (numero, taon, klase) VALUES ( '$ number', '$ taon', 11)".

Kahit na ang code at naragdagan ang lakas ng tunog, gayon pa man potensyal na ito ay gumagana magkano ang mas ligtas.

mga placeholder

Placeholder - isang uri ng marker para sa kung saan ang sistema ay kinikilala na ito ay ang lugar na kailangan mo upang palitan ang isang espesyal na function. Halimbawa:

$ Sate = $ mysqli-> maghanda ( "PUMILI District MULA Number SAAN Pangalan =?");

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

$ Sate-> execute ();

Ang seksyon ng code ay tumatagal ng isang pagsasanay template kahilingan at pagkatapos ay tinatalian ang mga variable na numero, at executes ito. Diskarte na ito ay nagbibigay-daan sa iyo upang hatiin ang query pagproseso at pagpapatupad nito. Kaya, maaari itong ma-save mula sa paggamit ng malisyosong code ay SQL-.

Ano ang maaari isang nang-aatake

Protection System - isang napaka-mahalagang kadahilanan, na kung saan ay hindi maaaring napapabayaan. Of course, isang simpleng business card site ay magiging mas madali upang maibalik. At kung ito ay isang malaking portal, serbisyo, forum? Ano ang mga kahihinatnan kung hindi mo isipin ang tungkol sa seguridad?

Una, isang Hacker ay maaaring masira ang integridad ng parehong mga base at alisin ito ganap. At kung ang site administrator o hoster ay hindi gumawa ng isang backup na, magkakaroon ka ng mahirap beses. Higit sa lahat, isang nanghihimasok, cracking isang solong site, maaaring pumunta sa iba pang mga nai-post sa parehong server.

Susunod ay ang pagnanakaw ng personal na impormasyon ng mga bisita. Paano gamitin - ang lahat ng bagay ay limitado lamang sa pamamagitan ng imahinasyon ng isang hacker. Ngunit sa anumang kaso, ang kahihinatnan ay hindi masyadong kaaya-aya. Lalo na kung nakapaloob pinansyal na impormasyon.

Gayundin, ang magsasalakay ay maaaring sumanib database sa iyong sarili at pagkatapos ay mangikil ng pera para sa kanyang pagbabalik.

Maling impormasyon sa mga gumagamit sa ngalan ng administrator ng site, ang tao ay hindi sila nanganganinag, ay maaari ding maging negatibong kahihinatnan hangga't maaari pandaraya katotohanan.

konklusyon

Ang lahat ng impormasyon sa artikulong ito ay ibinigay para sa layuning pang-impormasyon lamang. Gamitin ito lamang ang kailangan upang masubukan ang kanilang sariling mga proyekto kapag nakita nito kahinaan at harapin ang mga ito.

Para sa isang mas malalim na pag-aaral ng mga diskarte sa kung paano upang magsagawa ng SQL-iiniksyon, ito ay kinakailangan upang magsimula sa ang aktwal na kakayahan ng pananaliksik at mga tampok ng SQL wika. Bilang naipon query, mga keyword, uri ng data, at ang paggamit ng lahat ng ito.

Din ay hindi maaaring gawin nang walang pag-unawa sa operasyon ng PHP at HTML elemento function. Ang pangunahing paggamit mahina puntos para sa iniksyon - isang linya ng address, at iba't patlang ng paghahanap. Learning PHP function, ang paraan ng pagpapatupad at mga tampok ay malaman kung paano upang maiwasan ang mga pagkakamali.

Ang pagkakaroon ng maraming mga yari na mga kasangkapan software payagan para sa malalim na pagtatasa sa site na kilala kahinaan. Isa sa mga pinaka-popular na mga produkto - kali linux. Ang imahe ng isang Linux-based operating system, na kung saan ay naglalaman ng isang malaking bilang ng mga kasangkapan at mga programa na maaaring magsagawa ng malawakang pag-aaral ng site na lakas.

Ano ang kailangan mong malaman kung paano i-sumibak site? Ito ay napaka-simple - ito ay kinakailangan upang magkaroon ng kamalayan ng mga potensyal na kahinaan ng iyong proyekto o website. Lalo na kung ito ay isang online na tindahan sa online na pagbabayad, kung saan ang data ng pagbabayad user ay maaaring naka-kompromiso sa pamamagitan ng isang nang-aatake.

Para sa mga propesyonal na pag-aaral ng mga umiiral na mga tauhan ng seguridad ng impormasyon ay maaaring suriin ang mga site para sa iba't ibang pamantayan at lalim. Simula sa isang simpleng HTML-injections at sa mga social engineering at phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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