Како функционише напад СКЛ Ињецтион

Преглед садржаја

Ако наведемо рањивости у веб апликацијама које су имале највећи утицај због степена озбиљности коју могу изазвати, без сумње ћемо открити СКЛ Ињецтион. Ово рањивост чак може омогућити нападачу да са пописа садржаја базе података добије потпуни приступ серверуДа видимо од чега се састоји.

Термин ињекција, односи се на убризгавање или додавање СКЛ израза у упит који апликација извршава у бази података, то се врши користећи све уносе података које апликација тражи директно или индиректно од корисника, позивамо се директно на поља, на пример обрасце где корисник уноси одређене податке, индиректно то могу бити параметри који се прослеђују путем УРЛ -а (ГЕТ). Циљ убацивања СКЛ израза у упит је да се измени логика наведеног упита или резултат који ће база података вратити.

Ово је типичан облик у којем се од корисничког имена и лозинке тражи приступ приватном подручју. Код на страни сервера који формира упит био би отприлике овако:

 $ усернаме = $ _ПОСТ ['корисничко име']; $ пассворд = $ _ПОСТ ['лозинка']; $ скл = "СЕЛЕЦТ * ФРОМ усерс ВХЕРЕ усернаме = '$ усернаме' АНД пассворд = '$ пассворд'"; 
Као што видимо, прво се чувају корисничко име и лозинка унети у променљиве корисничког имена и лозинке, затим се те вредности укључују у упит који ће бити послат у базу података да провери да ли наведени корисник постоји. Претпоставимо да у нашем примеру корисник унесе као корисничко име администратор и лозинку пасс123, када се образац пошаље, формирани упит ће бити следећи:
 СЕЛЕЦТ * ФРОМ усерс ВХЕРЕ усернаме = 'админ' АНД пассворд = 'пасс123'
Као што видимо, када се унесу улазни подаци, они се налазе између појединачних наводника да представљају да је то текстуални низ. Овај упит ће бити послат у базу података и вратиће резултат са подацима о наведеном кориснику, ако постоји, а приступ приватном подручју ће бити дозвољен, у супротном ће вратити празан резултат и приступ ће бити одбијен.

Као што смо раније поменули, СКЛ ињекција Састоји се од додавања СКЛ кода упиту, а овај образац то дозвољава кроз поља за унос, тако да имамо апликацију која је рањива на СКЛ ињекцију.

Искоришћавање рањивости
Циљ искоришћавања ове рањивости је приступ приватном подручју без познавања исправног корисничког имена или лозинке и искориштавање рањивости. Дакле, оно што морамо да постигнемо је да убризгамо СКЛ код да бисмо формирали упит који враћа валидан резултат.

Да видимо како се формира упит ако у поље за лозинку убацимо следећи СКЛ код:

Када се упит формира, то ће бити следеће:

 СЕЛЕЦТ * ФРОМ усерс ВХЕРЕ усернаме = 'хацкер' АНД пассворд = '' ор 1 = 1 # '
Важна пажња мора се обратити на чињеницу да се уметнути код налази између једноструких наводника који садрже лозинку, појединачни наводник на почетку уметнутог кода је одговоран за попуњавање отвореног наводника у лозинци = 'део упит, на овај начин привремено добијамо следећи упит:
 СЕЛЕЦТ * ФРОМ усерс ВХЕРЕ усернаме = 'хацкер' АНД пассворд = ''
Овај упит тренутно неће вратити резултате јер не постоји такав корисник са тим акредитивима, али хајде да анализирамо остатак уметнутог кода:
 или 1 = 1 #
Реченица или 1 = 1 радикално мења логику упита, пошто као што знамо у упиту формираном условном ИЛИ Вратиће се истина када се испуни бар један од два израза, у нашем случају први израз је корисничко име = 'хакер' И лозинка = '' , и други или 1 = 1 , ово последње је увек тачно, то јест, 1 је увек једнако 1, јер ће упит вратити валидан резултат.

Коначно, морамо се ријешити наводника који затвара реченицу, за то можемо користити коментаре кориштене у СКЛ: #, - (двострука цртица), О добро /* */ . стога је комплетан упит:

 СЕЛЕЦТ * ФРОМ усерс ВХЕРЕ усернаме = 'хацкер' АНД пассворд = '' ор 1 = 1 # '
Све након # ће се узети у обзир као коментар и неће бити део упита.

Да бисмо добили валидан резултат, постоје многе друге варијације кода које можемо уметнути, на пример:

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave