Tuesday, October 10, 2006

How to hack a website by SQL Injection?


Website အခ်ိဳ႔ကို SQL Injection နည္းနဲ႔ လြယ္လြယ္ေလး Hack လို႔ရတယ္။ Login Page တစ္ခုေတြ႔တယ္ဆိုပါစို႔။ ေအာက္မွာျပထားသလို အစမ္း ရိုက္ၾကည့္ လိုက္ပါ။ ဒီအေၾကာင္းမသိေသးတဲ့ Website ေတြ အမ်ားႀကီးရွိပါတယ္။ အထူးသျဖင့္ SQLServer သံုးထားတဲ့ Website ေတြေပါ့။

ဥပမာ။ ။ hi' OR 1=1 -- ကို UserName သို႔၊ႏွင့္ Password မွာ ဆြဲရိုက္ၿပီး Login ကို ႏွိပ္ခ်ထည့္လိုက္။

UserName:
Password:


ေရးတဲ့သူက ေအာက္မွာျပထားသလို ေရးထားေကာင္း ေရးထားပါလိမ့္မယ္။
string sql = "SELECT * FROM User WHERE Name = '" + NameTextBox.Text +
"' AND Password = '" + PasswordTextBox.Text + "'";

သူကေတာ့ သူ႔ဘာသာသူ လံုလွၿပီေအာက္ေမ့ေနတယ္ေပါ့ခင္ဗ်ာ။ အဲဒီအခ်ိန္မွာ UserName သို႔၊ႏွင့္ Password မွာ
hi' OR 1=1 --
ကို သြင္းထည့္လိုက္ရင္ (Injection လုပ္လိုက္ရင္) ေနာက္ကြယ္က SQL Query မွာ ဘယ္လိုျဖစ္လာမလဲ စဥ္းစားၾကည့္ လိုက္ပါ။
SELECT * FROM User WHERE Name = 'hi' OR 1=1 --' AND Password = 'hi' OR 1=1 --'
ဒီလိုျဖစ္လာမယ္ေနာ္။ ေကာင္းၿပီ။ ဒီလိုဆိုရင္ ကာကြယ္တဲ့နည္းမရွိေတာ့ဘူးလား။ လြယ္ပါတယ္။ Parameterized Query ေတြကိုသံုးလိုက္ပါ။ Parameterized Query ဟာ သင့္ Website ကို SQL Injection အလုပ္ခံရျခင္းမွ ကာကြယ္တယ္။ ကိုယ့္ Website ကို ျပန္ Hack ၾကည့္ၾကပါခင္ဗ်ား။ မလုပ္ရေသးရင္ လုပ္ထားၾကဖို႔ေကာင္းပါတယ္။ ေအာက္မွာ Parameterized Query ကိုေရးျပထားပါတယ္။
SqlConnection objConnection = new SqlConnection(_ConnectionString);
objConnection.Open();
SqlCommand objCommand = new SqlCommand(
"SELECT * FROM User WHERE Name = @Name AND Password = @Password",
objConnection);
objCommand.Parameters.Add("@Name", NameTextBox.Text);
objCommand.Parameters.Add("@Password", PasswordTextBox.Text);
SqlDataReader objReader = objCommand.ExecuteReader();
if (objReader.Read())
{


Ref:http://www.uberasp.net/getarticle.aspx?id=46
Ref:http://www.unixwiz.net/techtips/sql-injection.html
Ref:Improving Web Application Security: Threats and Countermeasures, Patterns & Practices

2 comments:

Kyaw Zin Win said...

အဲေလာက္လြယ္ပါ႕မလား

WinWin said...

Thank you par Ko Pyo Wai Kyaw.
This is really good to know.
^_^