Sql injection attack မိတ္ဆက္

View previous topic View next topic Go down

Sql injection attack မိတ္ဆက္

Post  emolay on Mon Jun 13, 2011 4:25 am

where clause နဲ့ operator ေတြ တြဲသံုးတဲ့ အပိုင္းကို ဆက္ၾကရေအာင္.... တြဲသံုးရတဲ့ operator ေတြကို ေအာက္မွာအရင္ က်က္မွတ္လိုက္ပါ ။ operator သေကၤတ ေတြေနာက္မွာ သံုးတဲ့ values တန္ဖိုးေတြကိုေရးတဲ့အခါမွာ စာလံုး (word) ေတြဆိုရင္ single quote (') ထည့္ေပးရပါမယ္ ။ ကိန္းဂဏန္းေတြဆိုရင္ single quote ( ' ) ထည့္စရာမလိုပါဘူး ။ဒီအခ်က္မွာမွားယြင္းရင္ query လုပ္တဲ့အခါ အလုပ္လုပ္မွာမဟုတ္ပါဘူး ။

Operator Description

= Equal
<> Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN If you know the exact value you want to return for at least one of the columns

တခ်ိဳ ့ version ေတြမွာ < > ကို != ဒီလိုေရးပါတယ္ ။ ဒါေတြကို w3school ကပဲ အလြယ္ကူးေပးလိုက္တယ္ေနာ္..တခုခ်င္းကို where clause နဲ့ ဘယ္လိုတြဲသံုးရမယ္ဆိုတာကို ေအာက္မွာေရးသားပါ့မယ္ ။

= operator

ဒီေကာင္ကို သံုးပံုေလးေအာက္မွာၾကည့္ပါ ။ အေပၚမွာလဲ ရွင္းၿပီးပါၿပီ .. ဒီမွာ ထပ္ၿပီးရွင္းခ်င္ပါတယ္ ။ post ေတြမ်ားေအာင္ေရးတာမဟုတ္ပဲ... က႑ ေလးအလိုက္ေရးေတာ့ ဖတ္သူ ၿမင္သာၿပီး မွတ္ရတာလြယ္ကူေစမွာမို ့ပါ ။

select*
from table_name
where column_name= value

line 1 နဲ့ line 2 က သိၿပီးသားပါ ..မရွင္းေတာ့ပါဘူး ။ line 3 ကိုရွင္းပါ့မယ္ ။ where column_name ဆိုတာကေတာ့ မိမိေခၚၾကည့္မယ့္ table က မိမိလိုခ်င္တဲ့ data ရွိမယ့္ column_name ကို ရည္ညႊန္းတာပါ ။ တိတိက်က်ထပ္ညႊန္းဖို ့ = operator ကို သံုးလိုက္ပါတယ္ ။ ဆိုလိုတာက table ရဲ့ ေကာ္လံတခုေအာက္က တိတိက်က် data တခုရွိတဲ့ row ကို မွတ္ၿပီး ၿပခိုင္းလိုက္တာပါ ။ ဥပမာ...ၾကည့္ပါ ။

ကၽြန္ေတာ္တို ့ smf_1users ဆိုတဲ့ table မွာ user_name ဆိုတဲ့ ေကာ္လံရွိေနတာေတြ ့ၿပီဆိုပါစို ့ဗ်ာ ။ အဲဒီေအာက္မွာရွိတဲ့ admin ဆိုတဲ့ user ရဲ ့ data ေတြကိုပဲၾကည့္ခ်င္တယ္ ။

select*
from smf_1users
where user_name='admin'

ဒါကေတာ့ query command ပါ ။ = operator ကို သံုးထားတဲ့အတြက္ ဒီ column ေအာက္မွာ admin ဆိုတဲ့ value တခု ေသခ်ာရွိေနရပါမယ္ ။ = ဆိုတာ ထပ္တူညီသေကၤတကိုဗ် .. စာလံုးတလံုးေတာင္ လြဲလို့မရပါဘူး ။ လြဲတာနဲ့ အလုပ္မလုပ္ေတာ့ပါဘူး ။ ဒီ operator က အသံုးဝင္ပါတယ္ ။ ကၽြန္ေတာ္တို ့ စီးပြားေရးလုပ္ငန္းအတြက္ မိမိ ေဖာက္သည္ေတြရဲ ့ အခ်က္အလက္ေတြကို database တခုေဆာက္ၿပီး customers လို ့ table name ေပးထားမယ္ ... column 3ခု ထားမယ္ဗ်ာ ... ေဖာက္သည္ရဲ ့ အမွတ္စဥ္ နံပါတ္က တခု ၊ အမည္ကတခု ၊ လိပ္စာ address က တခု ေပါ့ဗ်ာ ... ဒီမွာ ကၽြန္ေတာ္တို ့က U Win ဆိုတဲ့ ေဖာက္သည္ရဲ ့ လိပ္စာကို အေရးတၾကီး သိဖို ့လိုအပ္လာၿပီဗ်ာ ... ခက္တာက သူရဲ့ အမွတ္စဥ္ကို ေမ့ေနၿပီ row ဘယ္ေလာက္မွာ ရွိလဲမသိေတာ့ဘူး ။ တခုခ်င္းရွာရေအာင္ကလဲ ROW ေတြက ေထာင္ေသာင္းခ်ီေနတာကိုဗ် .။ အခ်ိန္အဲေလာက္မေပးနိုင္ဘူး ။ ဒါေပမယ့္ သူ ့အမည္ကိုေတာ့ ကၽြန္ေတာ္တို ့ သိေနတာပဲ .. ဒါေၾကာင့္ QUERY နဲ့ရွာမယ္ဗ်ာ .. ။

SELECT*
FROM CUSTOMERS
WHERE CUSTOMER_NAME='U WIN'

ဒါဆိုရင္ CUSTOMER_NAME ေကာ္လံေအာက္မွာ ရွိေနတဲ့ U WIN ဆိုတဲ့ VALUE ရွိေနတဲ့ ROW တခုပဲ က်လာပါလိမ့္မယ္ ။ ဒါဆို သူလိပ္စာကို သိနိုင္ၿပီေပါ့ ။ ဘာလို ့လဲဆိုေတာ ့ ေကာ္လံေတြအကုန္က်လာေအာင္လို ့ SELECT* ကို သံုးထားတယ္ေလ ... ။ ဒီေလာက္ဆိုရင္ = OPERATOR ကို သံုးနည္းနဲ့ သေဘာသဘာဝကို နားလည္ေလာက္ၿပီထင္ပါတယ္ ။ဒီလိုေရးၿပရတာကလဲ စာဖတ္သူ ေတြးတတ္ေအာင္ပါ ။ ခ်ဲ့နိုင္သေလာက္ခ်ဲ့ၿပီးေတြးရပါ့မယ္ ။ SQL INJECTION ဟာ ေတြးနိုင္သူတာ ေအာင္ၿမင္မွဳရနိုင္ပါတယ္ ။ ခ်ဲ့ထြင္ေတြးေတာၿပီး သံုးစြဲၾကရပါမယ္ ။

( ကၽြန္ေတာ္ အခုေရးသားေနတာဟာ စာဖတ္သူအေနနဲ့ ေနွးလြန္းတယ္လို ့ထင္ပါလိမ့္မယ္ ။ စိိတ္ရွည္ရွည္ထားၿပီးေလ့လာၾကပါ ။ ကၽြန္ေတာ္ ဒီလိုအေသးစိတ္ေရးသားေနတာက ေလ့လာသူတေယာက္ေသခ်ာသေဘာေပါက္ေစခ်င္လို ့ပါ ။ ဒီေနရာမွာသေဘာမေပါက္ရင္ ေနာက္ပိုင္း ခ်ာလည္လည္ၿဖစ္ကုန္ပါလိမ့္မယ္ ။ )
(ကၽြန္ေတာ္ဒီဖိုရမ္မွာ အခ်ိန္ေပးၿပီးသိသမွ်ေရးသားေနတာက ၿမန္မာလူမ်ိဳးေတြထဲက မသိမတတ္ေသးသူေတြတတ္ပါေစေတာ့ဆိုတဲ့ ရည္ရြယ္ခ်က္ေၾကာင့္ပါ ။တၿခားဘာရည္ရြယ္ခ်က္မွမရွိဘူး ။ ၿပည္ပေရာက္ကၽြန္ေတာ္တို ့ေတြ အမ်ားဆံုးေတြ ့ေနတာက ၿမန္မာဆိုရင္ အၿခားေကာင္ေတြက အထင္ေသးခ်င္ၾကတယ္ ။ ၿမန္မာေတြ ကြန္ၿပဴတာကို မသိမၿမင္ မသံုးတတ္ဘူးလို ့ထင္ေနတယ္ ။ သံုးတတ္ရင္လဲ အေပၚယံေလာက္ပဲလို ့ထင္ေနၾကတယ္ ။ ဒါကို မခံခ်င္ပါဘူး ။ၿမန္မာအခ်င္းခ်င္းေၾကာင္လက္သည္းဝွက္မေနပဲ မွ်ေဝ ဖလွယ္ၾကမွ ကၽြန္ေတာ္တို ့လိုခ်င္တဲ့ပန္းတ္ုိင္ကိုေရာက္မွာပါ ။ ကၽြန္ေတာ္ကေတာ့ ဘယ္သူေတြဘာလာေၿပာေၿပာ ကၽြန္ေတာ္သိသမွ် ေတာ့ ဆက္လက္မွ်ေဝသြားမွာပါ ။ မေကာင္းတဲ့ပညာဆိုတာေလာကမွာမရွိပါဘူး ။ သံုးစြဲသူအေပၚလိုက္ၿပီး ေကာင္းၿခင္း၊ မေကာင္းၿခင္းဆိုတာၿဖစ္လာတာပါ ။ဒါကၽြန္ေတာ့္ခံယူခ်က္ပါ ။SQL INJECTION ကို တတ္သြားလို ့ ကၽြန္ေတာ့ SITE ကို လာထိုးလို ့ေပါက္သြားရင္လဲ ကၽြန္ေတာ္ကေတာ့ ထုိသူ ့အတြက္ ဂုဏ္ေတာင္ယူလိုက္ပါအံုးမယ္.. ဆက္လက္ေရးသားပါအံုးမယ္ ... )

emolay

Posts : 114
Join date : 2011-06-12
Age : 22

View user profile

Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum